% Encodage : utf-8 (par défaut avec XeTeX)
% Note : Le <Tab> est en fait deux espaces
%   dans ce document.
%%%
% Titre : Les TeXnicités d'une affiche
% Auteur : Jonathan Godin
% Date : 12 février 2019
% Résumé : Présentation Beamer sur certains aspects
%   techniques ou difficultés pour concevoir une
%   affiche avec LaTeX/Beamer.
% 
%  Le .tex est disponible pour être consulter seulement. 
%  Vous N'avez PAS la permission de le compiler
%  ou de l'utiliser.
%    Jonathan Godin
%
% Pour toute question ou commentaire, écrivez-moi à
% godinj@dms.umontreal.ca
%%%
\documentclass[12pt]{beamer}
\usepackage{fontspec}  % équivalent de fontenc pour XeLaTeX
\usepackage{polyglossia} % équivalent de babel pour XeLaTeX
\setdefaultlanguage{french}

\usetheme{Boadilla}
\beamertemplatenavigationsymbolsempty % Enlever les bouttons en bas

\usepackage{xltxtra} % logo \XeLaTeX et \XeTeX
\usepackage{xcolor}  % pour \textcolor{<couleur}{<texte>}
\usepackage{graphicx} 


  % Raccourci pour \begin{itemize}
\def\i{\begin{itemize}\bgroup\def\i{\egroup\end{itemize}}}
\def\ii{\begin{itemize}\bgroup\def\ii{\egroup\end{itemize}}}

  % Pour faire les boîtes pour illustrer 
  % les configurations de colonnes
\def\boite#1{\halign{ &\fbox{##}\cr#1\crcr}}

  % Pour que les logos soient en computer modern
  % régulier (avec empattements)
\let\tex=\TeX
\def\TeX{{\rm\tex}}
\let\latex=\LaTeX
\def\LaTeX{{\rm\latex}}
\let\xelatex=\XeLaTeX
\def\XeLaTeX{{\rm\xelatex}}
\let\xetex=\XeTeX
\def\XeTeX{{\rm\xetex}}

  % Raccourci pour un petit espace verticale
\def\vv{\vskip2pt\relax}

  % Fontes utilisées ici et là. 
  % cmr10 = Computer Modern 10pt
  % cmr11 = Computer Modern 11pt
  % Utiliser kpsewhich cmr10.mf
  % pour trouver le chemin vers ce fichier.
\font\tenrm=cmr10
\font\twelverm=cmr11

  % Contient des définitions du format plain
  % pour utiliser \+ (voir chp 21 ``Alignement''
  % du TeXbook)
  %
  % Contient aussi la définition de
  % \raggedcenter du TeXbook (cette définition
  % se trouve à l'anexe B)
  %
  % Contient finalement la définition de
  % \demobox pour créer l'exemple de
  % rectangles coller pour représenter le texte.
  % (Voir exercice 11.5 du TeXbook.)
\input plainsettabs
 
  % Paramètre pour le bord de la boîte
  % de \fbox
\setlength\fboxrule{1pt}

\title{Les \TeX nicités d'une affiche}
\author{Jonathan Godin}
\date{Février 2019}
\keywords{TeX, LaTeX, affiches, commandes primitives, gabarit}

%  Version plain xetex pour indiquer les méta-données
%  du pdf. (Note : Ne fonctionne pas avec XeLaTeX.)
%\special{pdf:docinfo
%    <<
%    /Author (Auteur)
%    /Title (Les TeXnicités d'une affiche)
%    /Keywords (TeX, LaTeX, affiches, commandes primitives, gabarit)
%    >>
%}


\let\Begin=\begin
\let\End=\end
%\def\Enddocument{\end{document}}
%\long\def\Begindocument#1\Enddocument
%{
%  \Begin{document}
%  \vfill
%    Ici se trouve la présentation Beamer.
%    Dommage que vous ne puissiez pas la voir!
%  \vfill
%  \Enddocument
%}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%   DÉBUT   %%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\begin{frame}
  \maketitle
\end{frame}
\begin{frame}{Contenu}
  \tableofcontents
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%% section 0 %%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Informations importantes}
\begin{frame}{Introduction}
  \vfill
  \i
    \item Créer une affiche avec {\sl Beamer} est plus facile qu'on le croit
    \vfill
    \item Il existe plusieurs gabarits ({\it templates\/})
    \vfill
    \item On peut personnaliser et ajuster la mise en page avec certaines
    {\sl commandes primitives}
  \i
  \vfill
\end{frame}
\begin{frame}{Informations importantes}
  \vfill
  \i
    \item {\Large Le temps d'impression de \textbf{24 à 48 heures}}\vv
    \ii
      \item Votre affiche doit être \textcolor{red}{prête} à imprimer
        \textcolor{red}{\textbf{lundi le 4 mars}}
    \ii
    \vfill
    \item Il n'y a pas de format standard en tant que tel, mais\vv
    \ii
      \item 36'' $\times$ 46'' (Gros) à peu près le format A0\vv
      \item 24'' $\times$ 36'' (moyen) à peu près A1\vv
      \item 11'' $\times$ 17'' (très petit)
    \ii
    \vfill
    \item 52'' est la largeur maximale
    \vfill
    \item Pas de longueur maximale
  \i
  \vfill
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%% section 1 %%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Quand utiliser \protect\LaTeX}

  % À cause de la (mauvaise) façon que \begin{frame} est
  % défini, il est impossible d'utiliser \demobox à
  % l'intérieur. Pour contrer ce problème, on place 
  % le contenu de \demobox en mémoire dans une boît
  % (TeX le compose immédiatement, donc \demobox n'est 
  % plus là) et on utilise le contenu de la boîte 
  % (déjà composé) dans le \begin{frame} .. \end{frame}
\setbox0=\hbox{\twelverm \demobox{Weniges, aber Reifes}}
\begin{frame}{Limitation de \LaTeX/Beamer}
  \begin{block}{Un peu de théorie}
    Pour \TeX, tout est un \textbf{rectangle}! Les caractères sont
    des rectangles que l'on colle pour former des lignes, qui sont
    des rectangles que l'on colle pour former des paragraphes, qui
    sont des rectangles que l'on colle pour former une page.
  \end{block}
  Exemple
  \i
    \item Quand on voit\par
    \noindent\centerline{\tenrm Weniges, aber Reifes\hfil}\par

    \item \leavevmode\TeX\ voit\par
    \noindent\centerline{\box0\hfil}
  \i

  \vfill
  Voir Chp.{} 11 du \TeX book ``Boxes''\par
  (Ne pas se mêler avec le chp.{} 21 ``Making Boxes''!)
\end{frame}
\begin{frame}{Limitation de \LaTeX/Beamer}
  \vskip0pt plus 2fill
  \i
    \item Il faut penser en terme de rectangles
    \vfill
    \item Si les rectangles ne sont pas adéquats 
      pour le concept
    \ii
      \item \textcolor{red}{il vaut mieux ne pas 
        utiliser \LaTeX/{\sl Beamer\/}}
    \ii
    \vfill
    \item Petite exception aux rectangles : {\tt\string\parshape}
  \i
  \vskip0pt plus 2fill
\end{frame}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%% section 2 %%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Conception et gabarit}

\begin{frame}{Conception et gabarit}
  \vfill
  \i
    \item Ayez en tête le concept de votre affiche, car~:
    \pause
      % On utilise ici \setbox pour mesurer la longueur
      % de la ligne « Un gabarit ne pas de miracle ».
      % Ceci permet d'ajuster la longueur du \begin{alertblock}
      % de façon précise. (La longueur du contenu de \box0
      % se trouve dans \wd0.)
    \setbox0=\hbox{Un gabarit ne fait pas de miracle}
    \centerline{\vbox{\hsize1.1\wd0\textwidth=\hsize
    \begin{alertblock}{Surprise!}
      \hfil\box0\hfil
    \end{alertblock}}\hfil}
    \vfill
    \pause
    \item Un gabarit s'occupe de~:
    \ii
      \item la taille de l'affiche (format)
      \item la taille et le style des polices de caractères (modifiables)
      \item certains éléments de présentation (le thème du Beamer)\par
        % \hsize est la primitive qui indique la largeur 
	% d'une ligne dans un paragraphe. On la modifie
	% localement lorsque l'on veut qu'un \vbox soit
	% moins large. \textwidth est l'équivalent de
	% \hsize, mais pour LaTeX (il faut donc changer 
	% les deux. Remarquez que seul \hsize est une
	% primitive.
      \noindent\kern-15mm\centerline{%
        \vbox{\hsize=.14\textwidth \textwidth=\hsize
	  \begin{block}{block} Un bloc\end{block}}
	\hfil
        \vbox{\hsize=.18\textwidth \textwidth=\hsize
	  \begin{alertblock}{alertblock}Une alert :O\end{alertblock}}
	\hfil
        \vbox{\hsize=.23\textwidth \textwidth=\hsize
	  \begin{exampleblock}{exampleblock}Un exemple?\end{exampleblock}}
      }
    \ii
  \i
  \vfill
\end{frame}

  % \string est une primitive qui écrit le nom
  % de la prochaine macro. P.ex. \string\mamacropreferee
  % écrira dans le pdf \mamacropreferee sans que
  % \mamacropreferee ne soit executer (donc 
  % \mamacropreferee n'a pas même pas à être 
  % définie!).
  % Note : Il faut que la fonte courante soit 
  % en typewriter (\tt ou \texttt), sinon au 
  % lieu d'écrire un \ (backslash), \string
  % va placer un " .
\begin{frame}{Premier exemple de gabarit}
  {\tt\string\usepackage[orientation=portrait,size=a0,\newline
  \null\hfill\hfill scale=1.4,debug]\{beamerposter\}}

    % \XeTeXpdffile est une primitive de XeTeX.
    % Elle inclut une page d'un pdf. Ici, c'est pour
    % inclure mon affiche. Le paramètre scaled <int>
    % est évidemment pour changer d'échelle. 
    % scaled 1000 multiplie l'échelle par 1,
    % donc scaled 50 est une contraction de 50/1000.
  \centerline{\setbox0=\hbox{
      \fbox{\XeTeXpdffile "aff_jgodin.pdf"  scaled 50  \relax}}
  $\hsize=\wd0\vcenter{\copy0}$ % \box0 contient l'image
                                % \wd0 est la largeur de l'image
  \hfil
  $\hsize=1.05\wd0\vcenter{\includegraphics[width=1.05\wd0]{formatA}}$}

  \noindent\hbox to \textwidth{\hskip0pt plus 5fil 
    \footnotesize{(image de wikipédia)}\hfil}
\end{frame}

  % Les explications pour cette diapo sont
  % trop compliqués pour les mettre ici.
  % Consulter le chapitre 22 ``Alignement''
  % du TeXbook.
\begin{frame}{Utiliser les colonnes}
  \noindent$$
  \vcenter{
    \tabskip1em % saut de 1em entre chaque colonne
    \boite{
	  % 1er ligne fait toute la longueur
        \multispan3\fbox{\dimen0=.6\textwidth\advance\dimen0 by 3.15em%
        \strut\vrule width\dimen0 height0pt depth0pt}
      \cr
          % 2e ligne en divisée en trois bloc
        \vrule height0pt depth0pt width.196\textwidth%
	\vrule height .3\textheight width0pt
	&
        \vrule height0pt depth0pt width.196\textwidth%
	\vrule height .3\textheight width0pt
	&
        \vrule height0pt depth0pt width.196\textwidth%
	\vrule height .3\textheight width0pt
      \cr
          % 3e ligne fait toute la longueur
        \multispan3\fbox{\dimen0=.6\textwidth\advance\dimen0 by 3.15em%
        \strut\vrule width\dimen0 height0pt depth0pt}
      \cr
      }% fin du \boite
    }% fin du \vcenter
  $$
\end{frame}

  % Voir le chapitre 22 ``Alignement'' du
  % TeXbook.
  % 
  % On voudrait écrire verbatim, donc 
  % on fait \catcode`\{=12 pour que le caractère {
  % soit un vrai caractère plutôt que l'ouverture 
  % d'un groupe.
  % Semblablement, on fait \catcode`\\=12 pour que
  % le \ (backslash) soit un caractère et non le
  % début d'une macro.
  % Enfin, on fait \catcode`/=0 pour que / (barre oblique)
  % prenne la place du \ (backslash) pour qu'on puisse
  % quand même appeler des macros. (On fait celui-ci
  % avant le backslash, sinon il n'y a plus de moyen
  % d'appeler \catcode.)
  %
  % Notez que ces changements sont locaux.
\newbox\alignement
\setbox\alignement=\vbox{
  \tt\begingroup\catcode`\{=12\catcode`\}=12\catcode`/=0\catcode`\\=12%
  %
  /+ <Entête et titre> /vrule width0pt height10pt depth9pt/cr
  /+ \beg&in{columns}/cr
  /+ & \begin&{column}{.33\textwidth}/cr
  /+ && $/vdots$ /cr
  /+ & \end{column}/cr
  /+ & \begin{column}{.33\textwidth}/cr
  /+ && $/vdots$ /cr
  /+ & \end{column}/cr
  /+ & \begin{column}{.33\textwidth}/cr
  /+ && $/vdots$ /cr
  /+ & \end{column}/cr
  /+ \end{columns}/cr
  /+ <Bas de page et conclusion> /vrule width0pt height16pt depth9pt/cr
  /endgroup
}
\begin{frame}{Utiliser les colonnes}
  \par\vfill
  \box\alignement
\end{frame}


\setbox\alignement=\vbox{
  \tt\begingroup\catcode`\{=12\catcode`\}=12\catcode`/=0\catcode`\\=12
  /catcode`(=1 /catcode`)=2%
  %
  /+ \beg&in{columns}/cr
  /+ & \beg&in&{column}{.33\textwidth}/cr
  /+ && /fbox(/strut/vrule width 5em height0pt depth0pt)
    /fbox(/strut/vrule width 5em height0pt depth0pt)/cr
  /+ && /fbox(/strut/vrule width 10em height0pt depth0pt/ / )
    /hbox(/rm/qquad$/longleftarrow$ $/smash(/hsize=.24/hsize/vcenter(/vbox(
    /noindent en utilisant d'autres colonnes)))$)/cr
  /+ && /fbox(/strut/vrule width 5em height0pt depth0pt)
    /fbox(/strut/vrule width 5em height0pt depth0pt)/cr
  /+ & \end{column}{.33\textwidth}/cr
  /+ &&&$/vdots$ /cr
  /+ \end{columns}/cr
  /endgroup
}
\begin{frame}{Utiliser les colonnes}
  \par\vfill
  \box\alignement
\end{frame}

\begin{frame}{Utiliser les colonnes}
  \noindent$$
  \vcenter{
    \def\Par{\par}
    \tabskip1em
    \boite{
        \multispan3\fbox{\dimen0=.6\textwidth\advance\dimen0 by 3.15em%
        \strut\vrule width\dimen0 height0pt depth0pt}
      \cr
        \vrule height0pt depth0pt width.2\textwidth%
	\vrule height .3\textheight width0pt
        &
        \omit\thinspace\hbox{\hsize.21\textwidth
	  \vbox{\noindent
	    \fbox{
	      \vrule height0pt depth0pt width.07\textwidth
              \vrule height .08\textheight width0pt}% fin du \fbox
	    \hfill
            \fbox{
	      \vrule height0pt depth0pt width.07\textwidth
              \vrule height .08\textheight width0pt}% fin du \fbox
	    \Par
            \noindent
	    \fbox{
	      \vrule height0pt width.188\textwidth
              \vrule height .08\textheight width0pt}% fin du \fbox
	    \Par
            \fbox{
	      \vrule height0pt depth0pt width.07\textwidth
              \vrule height .08\textheight width0pt}% fin du \fbox
	    \hfill
            \fbox{
	      \vrule height0pt depth0pt width.07\textwidth
              \vrule height .08\textheight width0pt}% fin du \fbox
	    \Par
          }% fin du \vbox
        }%fin du \hbox
        \thinspace
        &
        \vrule height0pt depth0pt width.2\textwidth%
	\vrule height .3\textheight width0pt
      \cr
        \multispan3
	\fbox{\dimen0=.6\textwidth\advance\dimen0 by 3.15em%
          \strut\vrule width\dimen0 height0pt depth0pt}% fin du \fbox
      \cr
    }% fin de \boite
  }% fin du \vcenter
  $$

  \i
    \item Moral~: Le gabarit et le thème gère l'apparence,
    utilisez ensuite les colonnes pour obtenir le format
    voulu
  \i
\end{frame}
\begin{frame}{Deuxième exemple de gabarit}
  \hrule width0pt depth9.5mm
  \i
    \item En fait, le premier exemple est général!
  \i
  \vskip0pt plus 1filll
\end{frame}
\begin{frame}{Le package {\tt beamerposter}}
  \vfill
  \i
    \item En fait, le premier exemple est général!
    \vfill
    \item Toutes les affiches ne sont qu'une combinaison astucieuse
      de colonnes
    \vfill 
    \item Utiliser\par
      {\tt\string\usepackage[\textbf{orientation}=<portrait|landscape>,\par
      \qquad \textbf{size}=<a0b|a0|a1|a2|a3|a4|custom>,\par
      \qquad \textbf{width}=<dimen>, \textbf{height}=<dimen>,%
      \quad{\footnotesize\%  Si size=custom}\par
      \qquad \textbf{scale}=<float>,\ \rlap{\hsize=.5\textwidth
        \vtop{\footnotesize \% facteur de dilatation \newline
          \% des polices de caractère}}\par
      \qquad \textbf{debug}] \qquad {\footnotesize\% pour utiliser %
      le package fp}\par
      \qquad \{beamerposter\}}\par
  \i
\end{frame}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%% section 3 %%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Ajuster la mise en page}

\begin{frame}{Ajuster la mise en page}
  \vskip0pt plus 2fill
  \i
    \item But de \LaTeX~: {\sl Contrôler} la mise en page pour 
    que l'auteur se concentre sur le contenu
    \vfill
    \item Sur une affiche, il est parfois {\sl nécessaire}
    de gérer la mise en page soi-même
    \vfill
    \item Certaines commandes primitives de \TeX\
    contournent l'emprise de \LaTeX\ sur la mise en page
  \i
  \vskip0pt plus 2fill
\end{frame}

  % On définit \primitives pour faire le
  % tableau de commandes primites. On peut
  % difficile utiliser la primite \halign
  % dans un \begin{frame}..\end{frame}, c'est
  % pourquoi on définit \primitives ici.
  %
  % \primitives définit simplement le gabarit
  % d'un \halign comme \hbox{\tt <texte de la cellule>},
  % c'est-à-dire que chaque case du tableau seront
  % dans un \hbox et en fonte typewriter.
\def\primitives#1{\halign{&\hbox{\tt##}\cr#1\crcr}}
\begingroup
  % / (barre oblique) devient le marqueur de
  % début d'une macro.
\catcode`/=0
  % \ (backslash) devient un simple caractère.
\catcode`\\=12
/begin{frame}{Primitives}
  /tabskip1.2em
  /baselineskip18pt
  $$/vcenter{/primitives{
    \vskip & \hskip & \par & \input /cr
    \write & \immediate & \hbox & \vbox /cr
    \vtop & \vcenter & \leaders & \vrule /cr
    \hrule & \string & \the & \show /cr
    \meaning & \showthe & \font & \special /cr
    \kern & \raise & \lower & \catcode  /cr
    \edef & \xdef & \global & \advance /cr
    \multiply & \expandafter & \noexpand & \let /cr
    \halign & \valign & \vadjust & \setbox /cr
    \parshape & \leftskip & \rightskip & \accent /cr
    \over & \atop & \tolerance & \ignorespaces /cr}}$$
    /vrule height1cm width0pt depth0pt
/end{frame}
/endgroup
\begingroup
  % On définit \c (sont nom ne symbolise rien,
  % je cherchais quelque chose de court) locallement.
  % Son argument sera tout le texte qu'elle renconte
  % jusqu'à une espace. P.ex. l'argument de \c dans
  % \c une ligne de text
  % sera 'une'.
  % \c sert à rayer un mot.
\def\c#1 {\setbox0=\hbox{#1}\copy0%
  \llap{\vrule width\wd0 height3.5pt depth-2.1pt}%
  \ \ignorespaces}
\catcode`/=0
\catcode`\\=12
/begin{frame}{Primitives}
  /tabskip1.2em
  /baselineskip18pt
  $$/vcenter{/primitives{
    \vskip & \hskip & \par & \input /cr
    /c\write & /c\immediate & \hbox & \vbox /cr
    \vtop & \vcenter & \leaders & \vrule /cr
    \hrule & /c\string & \the & /c\show /cr
    \meaning & \showthe & \font & /c\special /cr
    \kern & \raise & \lower & /c\catcode  /cr
    \edef & /c\xdef & /c\global & /c\advance /cr
    /c\multiply & /c\expandafter & /c\noexpand & \let /cr
    \halign & /c\valign & \vadjust & \setbox /cr
    \parshape & /c\leftskip & /c\rightskip & /c\accent /cr
    \over & \atop & /c\tolerance & \ignorespaces /cr}}$$
    /vrule height1cm width0pt depth0pt
/end{frame}
/endgroup

\begingroup
\def\c#1 {\setbox0=\hbox{#1}\copy0%
  \llap{\vrule width\wd0 height3.5pt depth-2.1pt}%
  \ \ignorespaces}
%
  % \d est parreil que \c, sauf qu'il met le
  % texte en bleu plutôt que de le rayer.
\def\d#1 {\textcolor{blue}{#1}\ \ignorespaces}
\catcode`/=0
\catcode`\\=12
/begin{frame}{Primitives}
  /tabskip1.2em
  /baselineskip18pt
  $$/vcenter{/primitives{
    /d\vskip & /d\hskip & \par & \input /cr
    /c\write & /c\immediate & \hbox & \vbox /cr
    \vtop & \vcenter & \leaders & /d\vrule /cr
    \hrule & /c\string & /d\the & /c\show /cr
    \meaning & \showthe & /d\font & /c\special /cr
    /d\kern & \raise & \lower & /c\catcode  /cr
    \edef & /c\xdef & /c\global & /c\advance /cr
    /c\multiply & /c\expandafter & /c\noexpand & \let /cr
    \halign & /c\valign & \vadjust & /d\setbox /cr
    /d\parshape & /c\leftskip & /c\rightskip & /c\accent /cr
    \over & \atop & /c\tolerance & \ignorespaces /cr}}$$
    /vrule height1cm width0pt depth0pt
/end{frame}
/endgroup

\begin{frame}{Aligner à l'aide d'espace infiniment élastique}
  \begin{columns}
    \begin{column}{.35\textwidth}
      \noindent \textbf{Primitives~:} 
      \i
        \item {\tt\string\hfil, \string\hfill,
          \par\noindent\kern-2em\hbox{\string\hskip0pt plus 1filll}}
        \vskip1em
        \item {\tt\string\vfil, \string\vfill,
          \par\noindent\kern-2em\hbox{\string\vskip0pt plus 1filll}}
      \i
    \end{column}
  \hfill
    \begin{column}{.35\textwidth}
      \vbox to .6\textheight{
      \setbox0=\vtop to .6\textheight{\hrule depth .597\textheight width .3pt}
      \ht0=0pt\wd0=0pt\dp0=0pt % les dim de \box0 sont réduite
                               % à celle d'un point
      \box0\hrule
      \i
        \item Par exemple
        \vfill
        \item il y a 
        \vfill
        \item un {\tt\string\vfill}
        \vfill
        \item entre chaque item de cette liste
      \i
      \hrule
      }\vrule height.6\textheight width.3pt depth0pt
    \end{column}
  \hfill
    \begin{column}{.03\textwidth}
      \hbox{\vrule height.5\textheight width.3pt depth0pt
      \vbox to .5\textheight{\hrule\centering
          $\bullet$
          \vskip0pt plus 2fill
          $\bullet$
          \vfill
          $\bullet$\par
          \hrule
      }\vrule height.5\textheight width.3pt depth0pt}
    \end{column}
  \end{columns}
\end{frame}


\begin{frame}{Crénage entre les gros caractères (kerning)}
    % On définit \gros comme étant la fonte cmr12
    % (Computer Modern 12pt) qui est élargi à 80pt.
  \font\gros=cmr12 at 80truept
  \i
  \item Les titres et sous-titres pevent être très gros (60 à 80pt)
  \vfill
  \item P.ex., ce {\gros mot} est en 80pt
  \vfill
  \item L'espacement est très mauvais
  \ii
    \item On utilise {\tt\string\kern} pour le modifier
  \ii
  \pause
  \vfill
  \item Comme ceci : {\gros m\kern-7pt o\kern-5pt t}
  \ii
    \item {\tt m\string\kern-7pt o\string\kern-5pt t}
  \ii
  \i
\end{frame}
\begin{frame}{Polices de caractères (\XeLaTeX)}
  \vfill
  \i
    \item La primitive {\tt\string\font} permet d'appeler une nouvelle fonte
    \vfill
    \item {\tt\string\font} de \XeTeX\ est beaucoup plus puissant
    \ii
      \item Ex~: \font\liber="Linux Libertine O" at 12pt
        {\liber Cette phrase est en Linux Libertine de taille 12pt.}\vv
      \item {\tt\string\font\string\liber="Linux Libertine O" at 12pt}\par
        {\tt\{\string\liber\ Cette phrase est en Linux Libertine 
	de taille 12pt.\}}
    \ii
    \vfill
    \item Elle permet d'utiliser n'importe quelle fonte
    \vfill
    \item {\tt\string\font} est utile et rapide pour utiliser une fonte
      une fois
    \vfill
    \item Pour changer la police pour l'ensemble de l'affiche, il vaut
    mieux utiliser un package
  \i
  \vfill
\end{frame}

\begin{frame}{{\tt\string\strut}}
  \font\gros=cmr12 at 60pt
  \i
    \item Un bloc est un peu plus profond que le caractère le plus profond.
    \ii
      \item Pour du gros texte, ce n'est pas toujours assez profond
    \ii
  \i
  \setbox0=\hbox{\gros M\kern-7pt o\kern-5pt t}
  \bgroup
    \hsize=\wd0\textwidth=\hsize
    \begin{block}{}
      \copy0
    \end{block}
  \egroup
  \i
    \item On utilise {\tt\string\strut} pour insérer un caractère
    invisible plus profond~: \vrule width.3pt height 10.14995pt depth 4.35004pt
    \item ex.{} avec {\tt\string\fbox}~: \fbox{a} et \fbox{a\strut}
  \i
  \begin{columns}
    \begin{column}{1.1\wd0}
      \bgroup
        \hsize=\wd0\textwidth=\hsize
        \begin{block}{}
          \copy0\strut
        \end{block}
      \egroup
    \end{column}
    \pause
    \dimen255=\textwidth
    \advance\dimen255 by -1.1\wd0
    \begin{column}{\dimen255}
      \i
        \item  Primitive~: {\tt\string\vrule{} width* height* depth*}
        \item \noindent\vrule width 2cm height 3pt depth-2pt\par
        {\tt\string\vrule\ width 2cm height 3pt depth-2pt}
      \i
    \end{column}
  \end{columns}
\end{frame}


\begin{frame}{Problème avec {\tt\string\centering} pour les titres}

    \bgroup
      \centering
      Le plus grand problème d'analyse est
      que le mot «~analyse~» n'ait pas
      d'abréviation appropriée.\par
      % Important de finir un paragraphe 
      % par \par lorsque \centering est
      % local et arrive à sa fin.
    \egroup
    \vfill
    \bgroup
      \raggedcenter % défini dans plainsettabs.tex
      Le plus grand problème d'analyse est
      que le mot «~analyse~» n'ait pas
      d'abréviation appropriée.\par
    \egroup
\end{frame}

\begin{frame}{Remplacer {\tt\string\centering} par {\tt\string\raggedcenter}}
  On a obtenu
  \begin{block}{}
    \bgroup
      \raggedcenter
      Le plus grand problème d'analyse est
      que le mot «~analyse~» n'ait pas
      d'abbréviation appropriée.\par
    \egroup
  \end{block}
  avec 
  
    % \meaning écrit la définition 
    % d'une macro dans le pdf 
    % (\show l'écrit dans le terminal
    %  et le log).
    % Par exemple, \meaning\centerline
    % écriera dans le pdf (si la fonte est
    % en \tt)
    % macro:#1 -> \line {\hss #1\hss}
    % et \meaning\line donne
    % macro: -> \hbox to\hsize
    % 
    % (Sujet à changer selon le format.
    %  Ceux-ci sont les définitions du
    %  format plain.)
  \begin{block}{\tt\string\raggedcenter}
    {\tt\meaning\raggedcenter}
  \end{block}

  \pause
  \i
    \item {\tt\string\raggedcenter} n'est pas défini dans le format \LaTeX
    \ii
      \item {\tt\string\def\string\raggedcenter\{%
      \string\leftskip{} = 0pt plus 4em \ldots\}}
    \ii
    \item *{\tt\string\usepackage[newcommands]\{ragged2e\}}
    \ii
      \item Ceci redéfini {\tt\string\centering} de la bonne façon
    \ii
  \i
\end{frame}

\begin{frame}{{\tt\string\parshape}}
  \relax
  {\tt\string\parshape=$n$ $i_1$ $\ell_1$ $i_2$ $\ell_2$ %
    $\ldots$ $i_n$ $\ell_n$}
  \i
    \item $n$ est le nombre de ligne
    \item $\ell_j$ la longueur de la ligne $j$
    \item $i_j$ l'indentation à partir de la gauche
  \i 
  
  \vfill
  
    % Appel de la fonte ecrm1000
    % (European Computer Modern Roman Medium)
    % C'est la même fonte que Computer Modern, 
    % mais avec les glyphes pour é è ê à ü ä etc.
    % et « »
  \font\tenecr=ecrm1000
  \tenecr
  \font\tentt=cmtt10 % Computer Modern Typewriter 10pt

  \moveright .42\textwidth\vbox to 0pt{\vskip15pt
      $\longrightarrow\hsize.3\textwidth\vcenter{
	\includegraphics[width=.3\textwidth]{../transitions-1}}$\vss}
  \parshape 8 
    0pt 7.5cm 
    0pt 6cm 
    0pt 6cm 
    0pt 5cm 
    0pt 4cm 
    0pt 6cm 
    0pt 6cm 
    0pt 12cm
  {\tentt\string\parshape} est utile lorsqu'on
  veut que le texte entoure une image. C'est
  une façon de déjouer le caractère rectangulaire
  du programme \TeX. Par exemple, ce paragraphe
  a été écrit en utilisant {\tt\string\parshape} 
  avec les valeurs 8 0pt 8cm 0pt 6cm 0pt 4cm 0pt 
  2cm 0pt 4cm 0pt 6cm 0pt 8cm 0pt 12cm
  % Les valeurs ici sont mauvaises, mais ça
  % fait marcher l'exemple avec ce texte.
\end{frame}

  % C'est la fin. J'espère que vous avez apprécié!
\finliste % Macro interne. Pour protéger contre la compilation.
\end{document}
