%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% seminar.con --- Customization of the Seminar document class.
%%                 We take care to do this for easy adaptations in other
%%                 institutions and contexts.
%%
%% Author          : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
%% Created the     : 1993
%% Last mod. by    : hv
%% Last mod. the   : 2014-01-17
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\def\fileversion{3.3}
\def\filedate{2014/01/17}
%
\typeout{seminar.con file: example of customization of the Seminar
         document class^^J%
         (Version \fileversion\space of <\filedate> (DG,hv))}
\ProvidesFile{seminar.con}[\filedate\space v\fileversion\space `seminar.con' (dg,hv)]

% Packages used
% -------------

% General packages (all are on CTAN)
\PassOptionsToPackage{pdffitwindow,colorlinks,pdfpagemode=UseNone,bookmarks,setpagesize=false}{hyperref}
\PassOptionsToPackage{dvipsnames,svgnames}{xcolor}
\usepackage{calc}               % Simple computations with LaTeX variables
\usepackage[hang]{caption}      % Improved captions
\usepackage{fancybox}           % To have several backgrounds
                                % (must be loaded before `fancyvrb')
\usepackage{fancyhdr}           % Headers and footers definitions
\usepackage{fancyvrb}           % Fancy verbatim environments
%\usepackage{pstricks}             % PSTricks with the standard color package
%                                % (before `graphicx' for the \scalebox macro)
\usepackage{graphicx}           % Standard graphics package
\usepackage{multido}            % General loop macro
\usepackage{pifont}             % Ding symbols (mainly for lists)
\usepackage{pst-node}           % PSTricks nodes
\usepackage{semcolor}           % Seminar colored slides
\usepackage{semhelv}            % Seminar helvetica fonts
\usepackage{semlayer}           % Seminar overlays
\usepackage{slidesec}           % Seminar sections and list of slides
\usepackage{pst-grad}           % PSTricks gradient mode
\usepackage{pst-fr3d}           % PSTricks 3D framed boxes
\usepackage{pst-slpe}           % Improved PSTricks gradients
\usepackage{thumbpdf}           % Thumbnails for PDF versions
\usepackage[breakwords]{truncate}% To truncate a string at a specified length
\usepackage{url}                % Convenient URL typesetting


\edef\SeminarAtCode{\the\catcode`\@}
\catcode`\@=11\relax

%\ifx\VTeXversion\@undefined
  \input{seminar.bug}           % Official bugs corrections
  \input{seminar.bg2}           % Unofficial bugs corrections
                                % (warning: you must load `longtable' before
                                % if you use it)
%\else
%  \input{/usr/local/vtex/texmf/vtex/config/seminar.con}% Adjust this path%%%%%%%%%%%%%%%%%%%
  % As VTeX does not support the HSB color model, we make it identical
  % to the RGB one. This will obviously produce strange color results,
  % but this will allow to compile the sources using here our
  % \PstFrameBoxThreeD macro.
%  \def\color@hsb#1#2{\c@lor@@hsb#2\@@#1}
%  \def\c@lor@@hsb#1,#2,#3\@@#4{%
  % From the VTeX \c@lor@@rgb definition
%  \vtexdef@checkarg{#1}{1}{rgb}%
%  \vtexdef@fixedhex{#1}\vtexdef@hex@a
%  \vtexdef@checkarg{#2}{1}{rgb}%
%  \vtexdef@fixedhex{#2}\vtexdef@hex@b
%  \vtexdef@checkarg{#3}{1}{rgb}%
%  \vtexdef@fixedhex{#3}\vtexdef@hex@c
%  \edef#4{c"\vtexdef@hex@a\vtexdef@hex@b\vtexdef@hex@c}}%
%\fi

% Compatibility patch between `pst-key' and the \RequirePackage macro
% to avoid later a LaTeX warning about the version of `keyval'
% From pst-key.tex
\def\next[#1]{\catcode`\@=11
% D.G. modification begin - Apr. 25, 2002
%       \expandafter\let\csname ver@keyval.sty\endcsname\empty
       \expandafter\xdef\csname ver@keyval.sty\endcsname{#1}%
% D.G. modification end
       \wlog{keyval: #1}}\next
                 [1998/07/23 v1.11 key=value parser (DPC)]

%\usepackage{hyperref} % Hyperlinks for PDF versions
                              % (to load after `slidesec', seminar.bg2, etc.)

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

\iffalse
% Definition of new colors
% ------------------------

\definecolor{Apricot}     {cmyk}{0,0.32,0.52,0}
\definecolor{Aquamarine}  {cmyk}{0.82,0,0.30,0}
\definecolor{CadetBlue}   {cmyk}{0.62,0.57,0.23,0}
\definecolor{DarkGray}    {gray}{0.2}
\definecolor{DarkGreen}   {rgb}{0,0.5,0}
\definecolor{ForestGreen} {cmyk}{0.91,0,0.88,0.12}
\definecolor{Gold}        {rgb}{1.,0.84,0.}
\definecolor{Goldenrod}   {cmyk}{0,0.10,0.84,0}
\definecolor{IndianRed}   {rgb}{0.8,0.36,0.36}
\definecolor{Lavender}    {cmyk}{0,0.48,0,0}
\definecolor{LemonChiffon}{rgb}{1.,0.98,0.8}
\definecolor{LightBlue}   {rgb}{0.68,0.85,0.9}
\definecolor{LightCyan}   {rgb}{0.88,1.,1.}
\definecolor{LightGray}   {gray}{0.92}
\definecolor{LightYellow} {rgb}{1.,1.,0.88}
\definecolor{Melon}       {cmyk}{0,0.46,0.50,0}
\definecolor{NavyBlue}    {cmyk}{0.94,0.54,0,0}
\definecolor{Orange}      {rgb}{1.,0.65,0.}
\definecolor{PaleGreen}   {rgb}{0.6,0.98,0.6}
\definecolor{PaleGreenB}  {rgb}{0.9,1,0.9}
\definecolor{Peach}       {cmyk}{0,0.50,0.70,0}
\definecolor{PeachPuff}   {rgb}{1.0,0.85,0.73}
\definecolor{PineGreen}   {cmyk}{0.92,0,0.59,0.25}
\definecolor{Pink}        {rgb}{1.,0.75,0.8}
\definecolor{RoyalBlue}   {cmyk}{1,0.50,0,0}
\definecolor{SeaGreen}    {cmyk}{0.69,0,0.50,0}
\definecolor{Salmon}      {cmyk}{0,0.53,0.38,0}
\definecolor{Sepia}       {cmyk}{0,0.83,1,0.70}
\definecolor{SlateBlue}   {rgb}{0.42,0.35,0.8}
\definecolor{Thistle}     {rgb}{0.85,0.75,0.85}
\definecolor{Turquoise}   {cmyk}{0.85,0,0.20,0}
\definecolor{Violet}      {cmyk}{0.79,0.88,0,0}
\definecolor{YellowOrange}{cmyk}{0,0.42,1,0}
\fi

% Definition of the (La)TeX string
\newcommand{\AllTeX}{%
{\textrm{(L\kern-.36em\raise.3ex\hbox{\textsc{%
a}}\kern-.05em)T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}

% "dinglist" environment
% Redefinition of it to be able to use colored symbols
\renewenvironment{dinglist}[2][black]
{\begin{list}{\ding{#2}}{}}{\end{list}}
% Symbol definitions for these lists
\newcommand{\DingListSymbolA}{43}
\newcommand{\DingListSymbolB}{243}
\newcommand{\DingListSymbolC}{224}
\newcommand{\DingListSymbolD}{219}

% Captions customizations
\setlength{\abovecaptionskip}{1.5mm}

% Centered paragraph title
\newcommand{\CenteredParagraphTitle}[2][LemonChiffon]{%
\centerline{\psshadowbox[fillstyle=solid,fillcolor=#1]{\large\HLe{#2}}}}

% Paragraph title
\newcommand{\ParagraphTitle}[2][LemonChiffon]{%
\noindent\psshadowbox[fillstyle=solid,fillcolor=#1]{\large\HLe{#2}}}

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

% `fancyvrb' customizations
% -------------------------

% Customized "Verbatim" environment
\RecustomVerbatimEnvironment{Verbatim}{Verbatim}
{commandchars=§µ¶,fontfamily=tt,frame=single,numbersep=2pt,framerule=0.15mm}

% "OutputResults" environment to emphasize program outputs
\DefineVerbatimEnvironment{OutputResults}{Verbatim}
{commandchars=§µ¶,fontfamily=tt,frame=single,numbers=none,
rulecolor=\color{blue},framerule=1mm}

% Not inside the preceding environments themselves, to allow
% local redefinitions
\fvset{baselinestretch=0.9,fontsize=\small,numbers=left}

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

% Seminar macros redefinitions
% ----------------------------

% We redefine the format of entries of the list of slides
\def\listofslides{%
  \hfuzz=7pt                    % To avoid the "Overfull \hbox" messages
  \def\l@slide##1##2##3##4{%
    \slide@dottedcline{##1 -- \hyperlink{##4}{##2}}%
                      {\slidenumberline{##3}}}%
  \def\l@subslide##1##2##3##4{%
    \slide@dottedcline{\hspace{2mm}##1 -- \hyperlink{##4}{##2}}%
                      {\slidenumberline{##3}}}%
  \@startlos}

\def\slide@dottedcline{\@dottedtocline{1}{1.5em}{2.3em}}

\def\slide@subheading[#1]#2{%
  \H@refstepcounter{slidesubsection}%
  \addtocontents{los}{%
% D.G. modification begin - Jan.  2, 2002
%    \protect\l@subslide{\the\c@slidesubsection}{\ignorespaces#1}%
    \protect\l@subslide{\the\c@slidesection.\the\c@slidesubsection}%
                       {\ignorespaces#1}%
% D.G. modification end
      {\@SCTR}{slideheading.\theslidesubsection}%
  }%
  \def\Hy@tempa{#2}%
  \ifx\Hy@tempa\@empty
  \else
    {%
      \edef\@currentlabel{%
        \csname p@slidesubsection\endcsname\theslidesubsection
      }%
      \makeslidesubheading{#2}%
    }%
  \fi
  \gdef\theslidesubheading{#1}%
  \ifHy@hypertexnames
    \ifHy@naturalnames
      \hyper@@anchor{slideheading.\theslidesubsection}{\relax}%
      \Hy@writebookmark
        {\theslidesubsection}%
        {#1}%
        {slideheading.\theslidesubsection}%
        {2}%
        {toc}%
    \else
      \hyper@@anchor{slideheading.\theHslidesubsection}{\relax}%
      \Hy@writebookmark
        {\theslidesubsection}%
        {#1}%
        {slideheading.\theHslidesubsection}%
        {2}%
        {toc}%
    \fi
  \else
    \Hy@GlobalStepCount\Hy@linkcounter
    \hyper@@anchor{slideheading.\the\Hy@linkcounter}{\relax}%
    \Hy@writebookmark
      {\theslidesubsection}%
      {#1}%
      {slideheading.\the\Hy@linkcounter}%
      {1}%
      {toc}%
  \fi
}%

% We will need, for demonstration purposes, to define sections and subsections
% without putting them in the list of slides
\def\SlideHeadingsNoListOfSlides{%
\def\slide@heading[##1]##2{%
  \refstepcounter{slidesection}%
  \@addtoreset{slidesubsection}{slidesection}
% D.G. modification begin - Feb. 22, 2002
%  \addtocontents{los}{\protect\l@slide
%    {\the\c@slidesection}{\ignorespaces##1}{\@SCTR}}%
% D.G. modification end
  \def\@tempa{##2}%
  \ifx\@tempa\@empty\else
    {\edef\@currentlabel{\csname p@slidesection\endcsname\theslidesection}%
      \makeslideheading{##2}}%
  \fi
  \gdef\theslideheading{##1}%
  \gdef\theslidesubheading{}}
%
\def\slide@subheading[##1]##2{%
  \refstepcounter{slidesubsection}%
% D.G. modification begin - Feb. 22, 2002
%  \addtocontents{los}{\protect\l@subslide
%    {\the\c@slidesubsection}{\ignorespaces##1}{\@SCTR}}%
% D.G. modification end
  \def\@tempa{##2}%
  \ifx\@tempa\@empty\else
    {\edef\@currentlabel{\csname p@slidesubsection\endcsname
      \theslidesubsection}\makeslidesubheading{##2}}%
  \fi
  \gdef\theslidesubheading{##1}}}

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

% Seminar customizations
% ----------------------

% No default frame (really useful for old plastic slides only)
\slideframe{none}

% To center horizontally the headers and footers (see seminar.bug)
\renewcommand{\headwidth}{\textwidth}

% To adjust the frame length to the header and footer ones
% \autoslidemarginstrue

% Headers and footers, using the `fancyhdr' package

\slidepagestyle{fancy}

\newcommand{\SeminarHeader}[1]{\fancyhead[C]{\Large\textbf{\HLe{#1}}}}

\newcommand{\SeminarStandardHeaderFooter}[4]{%
\fancyhf{}%
\fancyhead[R]{\theslide}
\SeminarHeader{#1}
\fancyfoot[L]{\raisebox{2.5mm}{\textbf{#2}}}
\fancyfoot[R]{\raisebox{3mm}{\scriptsize#3 \@date}\\[-4.5mm]
              {\tiny\textbf{#4}}}%
% Change of the width of header and footer rules
\def\headrulewidth{0.15mm}%
\def\footrulewidth{0.15mm}%
% Redefinition of the head line separator to have a double one
\def\headrule{%
\if@fancyplain\headrulewidth\plainheadrulewidth\fi
\hrule\@height\headrulewidth\@width\headwidth \vskip 0.5mm
\hrule\@height\headrulewidth\@width\headwidth \vskip -1mm}}

% Customization of the headings and subheadings
\renewcommand{\makeslideheading}[1]{%
\CenteredParagraphTitle[red]{%
\textcolor{white}{\textbf{\theslidesection{} -- #1}}}}
\renewcommand{\makeslidesubheading}[1]{%
\CenteredParagraphTitle{\theslidesubsection{} -- #1}}

% For automatic definition of headers
% ("Number - chapter : sub-chapter" or "Number - chapter" if no sub-chapter)
% (we also suppress the first uppercase letter of the sub-chapter name,
% if the optional "AsIs" keyword is not specified)
\def\AsIs{AsIs}
\def\SeminarStandardHeader@Separator{: }
\newcommand{\SeminarStandardHeader}[1][]{%
\SeminarHeader{%
\ifx\theslidesubheading\empty
  \theslidesection{} -- \theslideheading%
\else
  \edef\@tempa{#1}%
  \ifx\@tempa\AsIs
    \theslidesection{} -- \theslideheading{}\SeminarStandardHeader@Separator
                            \theslidesubheading%
  \else
    \theslidesection{} -- \theslideheading{}\SeminarStandardHeader@Separator %
      \SeminarStandardHeader@i{\theslidesubheading}%
  \fi
\fi}}

\def\SeminarStandardHeader@i#1{\expandafter\SeminarStandardHeader@ii#1\@nil}
\def\SeminarStandardHeader@ii#1#2\@nil{\MakeLowercase{#1}#2}

% Outline of the presentation
\newcommand{\SeminarOutlinePresentation}[4]{%
\ifx\SeminarColorVersion\AnswerYes
  \begingroup
    \SeminarHeader{#1}%
    \def\SeminarOutlinePresentationBoolean{true}%
    \renewcommand{\SeminarBackgroundCompositeColorFirst}{#2}%
    \renewcommand{\SeminarBackgroundCompositeColorSecond}{#3}%
    \SeminarSlideFrameBackground{SeminarBackgroundCompositeE}%
    \pst@dimh=\slideleftmargin
    \advance\pst@dimh by 35mm
    \renewcommand{\slideleftmargin}{\the\pst@dimh}%
    \setlength{\slidewidth}{289mm}%
    \addtolength{\slidewidth}{-\slideleftmargin}%
    \addtolength{\slidewidth}{-\sliderightmargin}%
    \renewcommand{\slidestretch}{0}% To compact the list
    \begin{slide}
      \begingroup
        \hypersetup{linkcolor=#4}%
        \Slidecontents
      \endgroup
    \end{slide}
  \endgroup
\fi}

% Backgrounds
% -----------

% Solid backgrounds

% Default color
\newcommand{\SeminarBackgroundSolidColor}{PeachPuff}

\SeminarNewSlideFrameBackground{SeminarBackgroundSolid}{%
\psframe[linestyle=none,fillstyle=solid,fillcolor=\SeminarBackgroundSolidColor]
        (\SeminarPaperHeight,\SeminarPaperWidth)}

% Gradient backgrounds

% Default begin color, end color, angle and middle point
\newcommand{\SeminarBackgroundGradientColorBegin}{LightYellow}
\newcommand{\SeminarBackgroundGradientColorEnd}{Gold}
\newcommand{\SeminarBackgroundGradientAngle}{0}
\newcommand{\SeminarBackgroundGradientMidPoint}{0}

\SeminarNewSlideFrameBackground{SeminarBackgroundGradient}{%
\psframe[linestyle=none,fillstyle=gradient,
         gradangle=\SeminarBackgroundGradientAngle,
         gradmidpoint=\SeminarBackgroundGradientMidPoint,
         gradbegin=\SeminarBackgroundGradientColorBegin,
         gradend=\SeminarBackgroundGradientColorEnd]
        (\SeminarPaperHeight,\SeminarPaperWidth)}

% Default slope style, steps and center
\newcommand{\SeminarBackgroundGradientSlopeStyle}{radslope}
\newcommand{\SeminarBackgroundGradientSlopeSteps}{300}
\newcommand{\SeminarBackgroundGradientSlopeCenter}{0.5 0.5}
\newcommand{\SeminarBackgroundGradientSlopeAngle}{0}
\newcommand{\SeminarBackgroundGradientSlopeRadius}{0}

\SeminarNewSlideFrameBackground{SeminarBackgroundGradientSlope}{%
\psframe[linestyle=none,fillstyle=\SeminarBackgroundGradientSlopeStyle,
         slopebegin=\SeminarBackgroundGradientColorBegin,
         slopeend=\SeminarBackgroundGradientColorEnd,
         slopesteps=\SeminarBackgroundGradientSlopeSteps,
         slopecenter=\SeminarBackgroundGradientSlopeCenter,
         slopeangle=\SeminarBackgroundGradientSlopeAngle,
         sloperadius=\SeminarBackgroundGradientSlopeRadius]
        (\SeminarPaperHeight,\SeminarPaperWidth)}

% Composite backgrounds

% Default colors
\newcommand{\SeminarBackgroundCompositeColorFirst}{LightBlue}
\newcommand{\SeminarBackgroundCompositeColorSecond}{NavyBlue}
\newcommand{\SeminarBackgroundCompositeColorThird}{RoyalBlue}

% Utility macros for the composite backgrounds

\newcount\PstFractal@DeepRecursion

% The recursion macro used (from David Carlisle)
\def\Recursion #1{%
#1\relax
  \expandafter\@firstoftwo
\else
  \expandafter\@secondoftwo
\fi}

% General definition of a fractal
\def\PstFractal#1{%
\ifx\PstFractalBegin\undefined
\else
  \PstFractalBegin
\fi
\Recursion
  {\ifnum#1>\@ne\relax}
  {\PstFractal@DeepRecursion=#1%
   \advance\PstFractal@DeepRecursion\m@ne
   \PstFractalRepeat{\PstFractal@DeepRecursion}}
  {\PstFractalDefinition}}

\def\PstSpiralSquare#1{%
\def\PstFractalDefinition{\psframe(1,1)}%
\def\PstFractalBegin{\PstFractalDefinition}%
\def\PstFractalRepeat##1{%
  % sqrt(0.2^2 + (1-0.2)^2)=0.824621
  % arcsin(0.2/0.824621)=14.036246
  \rput{-14.036246}(0,0.2){\psset{unit=0.824621}\PstFractal{##1}}}%
\pspicture(1,1)
  \PstFractal{#1}
\endpspicture}

% Composite background A
\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeA}{{%
\psframe[linestyle=none,
         fillstyle=solid,fillcolor=\SeminarBackgroundCompositeColorFirst]
        (\SeminarPaperHeight,\SeminarPaperWidth)%
\rput(4truemm,190truemm){%
  \psframe[linestyle=none,fillstyle=gradient,gradmidpoint=1,gradangle=90,
           gradbegin=\SeminarBackgroundCompositeColorSecond,
           gradend=\SeminarBackgroundCompositeColorFirst](8,0.2)}}
\rput(293truemm,14truemm){%
  \psframe[linestyle=none,fillstyle=gradient,gradmidpoint=1,gradangle=90,
           gradbegin=\SeminarBackgroundCompositeColorFirst,
           gradend=\SeminarBackgroundCompositeColorSecond](-8,0.2)}}

% Composite background B
\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeB}{{%
\psframe[linestyle=none,
         fillstyle=solid,fillcolor=\SeminarBackgroundCompositeColorFirst]
        (\SeminarPaperHeight,\SeminarPaperWidth)%
\rput(4truemm,190truemm){%
  \psframe[linestyle=none,fillstyle=gradient,gradmidpoint=1,gradangle=90,
           gradbegin=\SeminarBackgroundCompositeColorSecond,
           gradend=\SeminarBackgroundCompositeColorFirst](-0.1,0)(5,0.2)
  \psframe[linestyle=none,fillstyle=gradient,gradmidpoint=1,
           gradbegin=\SeminarBackgroundCompositeColorSecond,
           gradend=\SeminarBackgroundCompositeColorFirst](-0.1,0.03)(0.1,-5)}}
\rput(293truemm,14truemm){%
  \psframe[linestyle=none,fillstyle=gradient,gradmidpoint=1,gradangle=90,
           gradbegin=\SeminarBackgroundCompositeColorFirst,
           gradend=\SeminarBackgroundCompositeColorSecond](-5,0.2)(0.1,0)
  \psframe[linestyle=none,fillstyle=gradient,gradmidpoint=1,
           gradbegin=\SeminarBackgroundCompositeColorFirst,
           gradend=\SeminarBackgroundCompositeColorSecond](-0.1,5)(0.1,0)}}

% Composite background C
\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeC}{{%
\psframe[linestyle=none,
         fillstyle=solid,fillcolor=\SeminarBackgroundCompositeColorFirst]
        (\SeminarPaperHeight,\SeminarPaperWidth)}
\psset{xunit=1.3333,linecolor=\SeminarBackgroundCompositeColorSecond}%
\@tempdima=\SeminarPaperHeight
\divide\@tempdima\tw@
\@tempdimb=\SeminarPaperWidth
\divide\@tempdimb\tw@
\multido{\nLength=5.5+-0.2,\iAngle=0+1}{30}{%
  \rput{\iAngle}(\@tempdima,\@tempdimb){%
    \psframe(-\nLength,-\nLength)(\nLength,\nLength)}}}

% Composite background D
\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeD}{{%
\psset{linestyle=none,fillstyle=gradient,gradmidpoint=0}%
\psframe[gradbegin=\SeminarBackgroundCompositeColorFirst,
         gradend=\SeminarBackgroundCompositeColorSecond]
        (\SeminarPaperHeight,\SeminarPaperWidth)
\multips(4truemm,50truemm)(10truemm,30truemm){3}{%
  \psframe[gradbegin=\SeminarBackgroundCompositeColorSecond,
           gradend=\SeminarBackgroundCompositeColorFirst]
          (5truemm,180truemm)}
\@tempdima=\SeminarPaperHeight
\advance\@tempdima -29truemm
\multips(\@tempdima,0)(10truemm,-30truemm){3}{%
  \psframe[gradbegin=\SeminarBackgroundCompositeColorSecond,
           gradend=\SeminarBackgroundCompositeColorFirst]
          (5truemm,160truemm)}}}

% Composite background E
\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeE}{{%
\psset{linestyle=none,fillstyle=gradient,gradmidpoint=0.5}%
\psframe[gradbegin=\SeminarBackgroundCompositeColorFirst,
         gradend=\SeminarBackgroundCompositeColorSecond]
        (\SeminarPaperHeight,\SeminarPaperWidth)
\psframe[gradbegin=\SeminarBackgroundCompositeColorSecond,
         gradend=\SeminarBackgroundCompositeColorFirst]
        (5truemm,0)(35truemm,\SeminarPaperWidth)
\multips(10truemm,10truemm)(0,20truemm){11}{%
  \psframe[gradangle=90,
           gradbegin=\SeminarBackgroundCompositeColorFirst,
           gradend=\SeminarBackgroundCompositeColorSecond]
          (20truemm,10truemm)}}}

% Composite background F
\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeF}{{%
\psset{linestyle=none,fillstyle=gradient,gradmidpoint=1,gradangle=90}%
\psframe[gradbegin=\SeminarBackgroundCompositeColorFirst,
         gradend=\SeminarBackgroundCompositeColorSecond]
        (\SeminarPaperHeight,\SeminarPaperWidth)
\@tempdima=\SeminarPaperWidth
\advance\@tempdima -15truemm
\psframe[gradbegin=\SeminarBackgroundCompositeColorSecond,
         gradend=\SeminarBackgroundCompositeColorFirst]
        (0,\@tempdima)(\SeminarPaperHeight,\SeminarPaperWidth)
\psframe[gradbegin=\SeminarBackgroundCompositeColorSecond,
         gradend=\SeminarBackgroundCompositeColorFirst]
        (0,0)(\SeminarPaperHeight,15truemm)}}

% Composite background G
\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeG}{{%
\psset{linestyle=none,fillstyle=gradient,gradmidpoint=0,gradangle=30}%
\psframe[gradbegin=\SeminarBackgroundCompositeColorFirst,
         gradend=\SeminarBackgroundCompositeColorSecond]
        (\SeminarPaperHeight,\SeminarPaperWidth)
\@tempdima=\SeminarPaperWidth
\advance\@tempdima -15truemm
\psframe[gradbegin=\SeminarBackgroundCompositeColorSecond,
         gradend=\SeminarBackgroundCompositeColorFirst]
        (15truemm,-15truemm)(\SeminarPaperHeight,\@tempdima)
\psframe[gradbegin=\SeminarBackgroundCompositeColorFirst,
         gradend=\SeminarBackgroundCompositeColorSecond]
        (15truemm,0)(\SeminarPaperHeight,15truemm)}}

% Composite background H
\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeH}{{%
\psset{linestyle=none,fillstyle=gradient,gradmidpoint=1}%
\psframe[gradangle=0,gradbegin=\SeminarBackgroundCompositeColorFirst,
         gradend=\SeminarBackgroundCompositeColorSecond]
        (17mm,\SeminarPaperWidth)
\@tempdima=\SeminarPaperWidth
\advance\@tempdima -15mm
\psframe[gradangle=90,gradbegin=\SeminarBackgroundCompositeColorFirst,
         gradend=\SeminarBackgroundCompositeColorSecond]
        (0,\@tempdima)(\SeminarPaperHeight,\SeminarPaperWidth)
\advance\@tempdima 5mm
\psframe*[linecolor=white,framearc=0.3](12mm,-20mm)(300mm,\@tempdima)
\advance\@tempdima -5mm
\psline[linestyle=solid,linewidth=0.3]{c-c}(4mm,\@tempdima)(90mm,\@tempdima)}}

% Composite background I
\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeI}{{%
\psset{linestyle=none,unit=15,fillstyle=gradient,gradmidpoint=0,
       gradbegin=\SeminarBackgroundCompositeColorSecond,
       gradend=\SeminarBackgroundCompositeColorFirst}%
\@tempdima=\SeminarPaperHeight
\divide\@tempdima\tw@
\@tempdimb=\SeminarPaperWidth
\divide\@tempdimb\tw@
\rput(\@tempdima,\@tempdimb){\PstSpiralSquare{15}}}}

% Composite background J

% Sierpinski carpet
\newcommand{\PstSierpinskiCarpet}[1]{{%
\def\PstFractalDefinition{%
  \psframe(1,1)
  \psframe[fillstyle=solid,fillcolor=white](0.3333,0.3333)(0.6667,0.6667)}%
\def\PstFractalBegin{\PstFractalDefinition}%
\def\PstFractalRepeat##1{%
  \rput(0,0){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
  \rput(0.3333,0){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
  \rput(0.6667,0){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
  \rput(0,0.3333){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
  \rput(0.6667,0.3333){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
  \rput(0,0.6667){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
  \rput(0.3333,0.6667){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}
  \rput(0.6667,0.6667){\psset{xunit=0.3333,yunit=0.3333}\PstFractal{##1}}}%
\psset{dimen=middle}%
\pspicture(1,1)
  \PstFractal{#1}
\endpspicture}}

\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeJ}{{%
\psset{linestyle=none,xunit=\SeminarPaperHeight,yunit=\SeminarPaperWidth,
       fillstyle=solid,fillcolor=\SeminarBackgroundCompositeColorFirst}%
\@tempdima=\SeminarPaperHeight
\divide\@tempdima\tw@
\@tempdimb=\SeminarPaperWidth
\divide\@tempdimb\tw@
\rput(\@tempdima,\@tempdimb){\PstSierpinskiCarpet{3}}}}

% Composite background K

% Sierpinski triangle
\newcommand{\PstSierpinskiTriangle}[1]{{%
\def\PstFractalDefinition{%
  \pspolygon(1;0)(1;1)(1;2)
  \rput{-2}(0,0){\pspolygon(0.5;0.5)(0.5;1.5)(0.5;2.5)}}%
\def\PstFractalBegin{\PstFractalDefinition}%
\def\PstFractalRepeat##1{%
  \rput(0.5;0){\psset{unit=0.5}\PstFractal{##1}}
  \rput(0.5;1){\psset{unit=0.5}\PstFractal{##1}}
  \rput(0.5;2){\psset{unit=0.5}\PstFractal{##1}}}%
\rput{90}(0,0){%
  \SpecialCoor
  \degrees[3]
  \psset{dimen=middle}%
  \PstFractal{#1}}}}

\SeminarNewSlideFrameBackground{SeminarBackgroundCompositeK}{{%
\NormalCoor                     % Needed when \SpecialCoor is currently active
\psset{linestyle=none,unit=6.8,fillstyle=gradient,gradmidpoint=0,
       gradbegin=\SeminarBackgroundCompositeColorSecond,
       gradend=\SeminarBackgroundCompositeColorFirst}%
\@tempdima=\SeminarPaperHeight
\divide\@tempdima\tw@
\@tempdimb=\SeminarPaperWidth
\divide\@tempdimb\tw@
\advance\@tempdimb -35truemm
\rput(\@tempdima,\@tempdimb){\PstSierpinskiTriangle{4}}}}

% Backgrounds with external images

% With image file name
\newcommand{\SeminarBackgroundImageAngle}{0}
\newcommand{\SeminarBackgroundImageFile}{Undefined}

\SeminarNewSlideFrameBackground{SeminarBackgroundImage}{{%
\@tempdima=\SeminarPaperHeight
\divide\@tempdima\tw@
\@tempdimb=\SeminarPaperWidth
\divide\@tempdimb\tw@
\rput(\@tempdima,\@tempdimb){%
  \includegraphics[angle=\SeminarBackgroundImageAngle,
                   width=\SeminarPaperHeight,height=\SeminarPaperWidth]
                  {\SeminarBackgroundImageFile}}}}

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

% To choice color or black and white version
% ------------------------------------------

% Note: we do not use booleans because we want to manage three states:
% true, false and undefined. We must be able to force the value in front
% of the file, before the \documentclass macro. If this is not done,
% a question will be asked interactively (this can be falsely interactivity,
% using for instance a command like "echo y | latex ..." on Unix systems)

\def\AnswerYes{y}
\def\SeminarColorQuestion{y}
\def\SeminarPaperQuestion{n}

% Definition of the styles to enrich text (color or black and white version)
\def\SeminarColorVersion{\SeminarColorQuestion}
  \usepackage{hcolor}

% Screen or paper version?
\def\SeminarPaperVersion]{\SeminarPaperQuestion}
  \def\special@paper{297mm,210mm}%     A4 format

% A4 format
\usepackage{sem-a4}
\setlength{\slidewidth}{281mm}
\setlength{\slideheight}{170mm}
\def\SeminarPaperWidth{210truemm}
\def\SeminarPaperHeight{297truemm}

% Letter format
%\setlength{\slidewidth}{261mm}
%\setlength{\slideheight}{176mm}
%\def\SeminarPaperWidth{215.9truemm}
%\def\SeminarPaperHeight{279.4truemm}

% General size parameters for all formats
\renewcommand{\slidetopmargin}{15.5mm}
\renewcommand{\slidebottommargin}{13mm}
\renewcommand{\slideleftmargin}{4mm}
\renewcommand{\sliderightmargin}{4mm}

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

% Some general PSTricks useful add-ons
% ------------------------------------

% Initialization of PSTricks parameters

% As \psset, but, opposite to it, this version allow the following syntax:
% \def\MyPstFrame#1{{%
% \def\Temp{#1}%
% \ifx\Temp\empty
% \else
%   \PstSet{#1}
% \fi
% \begin{pspicture}(2,2)
%   \psframe(2,2)
% \end{pspicture}}}
%
% \def\PstParams{linecolor=red,fillstyle=solid,fillcolor=yellow}
% \MyPstFrame{\PstParams}
%
% The syntax \MyPstFrame{linecolor=cyan,fillstyle=vlines} still work,
% as with \psset

\def\PstSet#1{\PstSet@i#1,\@nil\ignorespaces}

\def\PstSet@i#1,{%
\expandafter\PstSet@ii#1,\@nil
\@ifnextchar\@nil{\@gobble}{\PstSet@i}}

\def\PstSet@ii#1,{%
\PstSet@iii#1=\@nil
\@ifnextchar\@nil{\@gobble}{\PstSet@ii}}

\def\PstSet@iii#1=#2\@nil{\psset{#1=#2}}

% \DoPerChar macro from Juergen Schlegelmilch
% °°°°°°°°°°°°°°°°
% (<schlegel@Informatik.Uni-Rostock.de> - posted on c.t.t. Jan. 27, 1998)
\def\DoPerChar#1#2#3\@nil{%
#1#2%
\edef\@tempa{#3}%
\ifx\@tempa\@empty
\else
  \DoPerChar#1#3\@nil
\fi}

% To write a text vertically (but with letters horizontal)
% °°°°°°°°°°°°°°°°°°°°°°°°°°
\def\TextTurn#1{\DoPerChar\TextTurn@CharacterTurn#1\@nil}
\def\TextTurn@CharacterTurn#1{\rotateleft{\,\hbox to 0mm{\hss#1\hss}}\,}

% To print a string in a framebox of a specified length
% °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
\def\PstTab{\@ifnextchar[{\PstTab@i}{\PstTab@i[]}}
\def\PstTab@i[#1]#2#3{{%
\psset{#1}%
\psframebox[framesep=0.06,framearc=0.8,shadow=true,shadowangle=45,shadowsize=0.1]{%
  \rule[-0.5mm]{0mm}{2.5mm}%
  \truncate[.]{#3}{\hfil#2\hfil}}}}

% To print tabs for the sections
% °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
\def\SeminarTabs#1#2#3#4{%
% #1 = length for each tab, #2 = font specifications (if changed),
% #3 = color of the current section,
% #4 = color for all sections except the current one
%
% Temporary redefinition of the OvalFrame PostScript macro
% for better look for a tab
\pst@Verb{%
/OvalFrame {
  x1 x2 eq y1 y2 eq or
     { pop pop x1 y1 moveto x2 y2 L }
     { y1 y2 sub abs
       x1 x2 sub abs
       2 copy gt { exch pop } { pop } ifelse
       2 div exch
       { dup 3 1 roll mul exch } if
       2 copy lt { pop } { exch pop } ifelse
       /b ED
       x1 y1 y2 add 2 div moveto
       x1 y2 x2 y2 b arcto
       x2 y2 x2 y1 b arcto
% D.G. modification begin - Mar. 20, 2002
%       x2 y1 x1 y1 b arcto
%       x1 y1 x1 y2 b arcto
       x2 y1 x1 y1 0 arcto
       x1 y1 x1 y2 0 arcto
% D.G. modification end
       16 { pop } repeat
       closepath }
  ifelse } def}%
%
\def\l@slide##1##2##3##4{\l@slide@i##1##2\@nil##4\@@nil}%
\def\l@slide@i##1\ignorespaces ##2\@nil##3\@@nil{%
\pst@@killglue% To eat the end of line after the \l@slide macro
\ifnum##1=\c@slidesection
  \def\SeminarTabsCurrentSectionColor{#3}%
\else
  \def\SeminarTabsCurrentSectionColor{#4}%
\fi
#2% To be able to change the font size, serie, etc.
\hyperlink{##3}{%
  \PstTab[fillstyle=solid,fillcolor=\SeminarTabsCurrentSectionColor]
         {##2}{#1}}}%
\let\l@subslide\@gobblefour
\@startlos}

% General annotation macro
% °°°°°°°°°°°°°°°°°°°°°°°°

% To add annotations on a page (slide), specially when using overlays
% This is specially useful to add comments on a set of equations
% or on program lines on a listing

\newdimen\PstAnnotation@BoxBaselineskipDim
\define@key[psset]{}{AnnotationBoxBaselineskip}{\pssetlength{\PstAnnotation@BoxBaselineskipDim}{#1}}
\define@key[psset]{}{AnnotationBoxCommand}{\def\PstAnnotation@BoxCommand{#1}}
\define@key[psset]{}{AnnotationBoxJustification}{\def\PstAnnotation@BoxJustification{#1}}

\newdimen\PstAnnotation@BoxLengthDim
\define@key[psset]{}{AnnotationBoxLength}{\pssetlength{\PstAnnotation@BoxLengthDim}{#1}}
\define@key[psset]{}{AnnotationBoxStyle}{\def\PstAnnotation@BoxStyle{#1}}
\define@key[psset]{}{AnnotationConnectionCommand}{\def\PstAnnotation@ConnectionCommand{#1}}

\define@key[psset]{}{AnnotationConnectionBasicStyle}{\def\PstAnnotation@ConnectionBasicStyle{#1}}

\define@key[psset]{}{AnnotationConnectionSpecialStyle}{\def\PstAnnotation@ConnectionSpecialStyle{#1}}

\define@key[psset]{}{AnnotationReferencePoint}{\def\PstAnnotation@ReferencePoint{#1}}

\define@key[psset]{}{AnnotationTextStyle}{\def\PstAnnotation@TextStyle{#1}}

\define@key[psset]{}{AnnotationPositionX}{\def\PstAnnotation@PositionX{#1}}

\define@key[psset]{}{AnnotationPositionY}{\def\PstAnnotation@PositionY{#1}}

% Default values
\psset{%
  AnnotationBoxBaselineskip=0.5mm,
  AnnotationBoxCommand=\psframebox,
  AnnotationBoxLength=4cm,
  AnnotationBoxJustification=r,
  AnnotationBoxStyle={linewidth=0.015,framesep=0.05},
  AnnotationConnectionCommand=\ncline,
  AnnotationConnectionBasicStyle={arrows=->,nodesep=0.1},
  AnnotationConnectionSpecialStyle=,
  AnnotationReferencePoint=l,
  AnnotationTextStyle=\scriptsize,
  AnnotationPositionX=13.45,
  AnnotationPositionY=0}

\SpecialCoor

\def\PstAnnotation{\@ifnextchar[{\PstAnnotation@i}{\PstAnnotation@i[]}}
\def\PstAnnotation@i[#1]#2#3{{%
\psset{#1}%
\PstAnnotation@TextStyle
\rput(\PstAnnotation@PositionX,0 | #2){%
  \rput[\PstAnnotation@BoxJustification](0,\PstAnnotation@PositionY){%
    \rnode[\PstAnnotation@ReferencePoint]{AnnotationNodeTemp}{%
      \ifx\PstAnnotation@BoxStyle\@empty
      \else
        \PstSet{\PstAnnotation@BoxStyle}
      \fi
      \PstAnnotation@BoxCommand{%
        \normalbaselineskip=\PstAnnotation@BoxBaselineskipDim
        \begin{minipage}{\PstAnnotation@BoxLengthDim}
          #3
        \end{minipage}}}}}
\ifx\PstAnnotation@ConnectionBasicStyle\@empty
\else
  \PstSet{\PstAnnotation@ConnectionBasicStyle}
\fi
\ifx\PstAnnotation@ConnectionSpecialStyle\@empty
\else
  \PstSet{\PstAnnotation@ConnectionSpecialStyle}
\fi
\PstAnnotation@ConnectionCommand{AnnotationNodeTemp}{#2}}}

% To put a right brace to point an annotation
\newcommand{\RightBrace}[1]{{% #1 = number of lines to put the brace around
\@tempdima=#1 pt
\advance\@tempdima\m@ne pt
\divide\@tempdima\tw@
\ifx\BaseLineStretchBrace\@undefined
  \@tempdimb=\normalbaselineskip
\else
  \@tempdimb=\BaseLineStretchBrace\normalbaselineskip
\fi
\@tempdimc=\strip@pt\@tempdima\@tempdimb
\advance\@tempdimc-0.1\@tempdimb
%
\setbox\z@\hbox{A}%
\ifdim\@tempdimc<0.5\ht\z@
  \advance\@tempdimc0.75\ht\z@
\fi
%
$\left \}\rule[-\@tempdimc]{0mm}{\@tempdimc}\right.$}}

% Macros useful when using overlays with the `listings' package
% -------------------------------------------------------------

\def\pnodeLstDown#1{%
\@tempdima=0.5\normalbaselineskip
\setbox\z@\hbox{A}%
\ifdim\@tempdima<0.5\ht\z@
  \advance\@tempdima0.25\ht\z@
\else
  \advance\@tempdima-0.5\ht\z@
\fi
\pnode(0,-\@tempdima){#1}}
\def\pnodeLstUp#1{\setbox\z@\hbox{A}\pnode(0,0.5\ht\z@){#1}}
\def\rnodeLst#1#2#3{\rnode[#1]{#2}{#3}}

\catcode`\@=\SeminarAtCode\relax
\endinput
% End seminar.con
