\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}

\makeatletter
\def\put@scale{.92}
\DeclareFontFamily{T1}{putscaled}{}%
\DeclareFontShape{T1}{putscaled}{m}{n}{<->s*[\put@scale]putr8t}{}%
\DeclareFontShape{T1}{putscaled}{m}{it}{<->s*[\put@scale]putri8t}{}%
\DeclareFontShape{T1}{putscaled}{m}{sc}{<->s*[\put@scale]putrc8t}{}%
\DeclareFontShape{T1}{putscaled}{b}{n}{<->s*[\put@scale]putb8t}{}%
\DeclareFontShape{T1}{putscaled}{b}{it}{<->s*[\put@scale]putbi8t}{}%
\DeclareFontShape{T1}{putscaled}{b}{sc}{<->s*[\put@scale]putbc8t}{}%
\DeclareFontShape{T1}{putscaled}{m}{sl}{<->s*[\put@scale]putro8t}{}%
\DeclareFontShape{T1}{putscaled}{b}{sl}{<->s*[\put@scale]putbo8t}{}%
\DeclareFontShape{T1}{putscaled}{bx}{n}{<->ssub * putscaled/b/n}{}%
\DeclareFontShape{T1}{putscaled}{bx}{it}{<->ssub * putscaled/b/it}{}%
\DeclareFontShape{T1}{putscaled}{bx}{sc}{<->sub * putscaled/b/sc}{}%
\DeclareFontShape{T1}{putscaled}{bx}{sl}{<->ssub * putscaled/b/it}{}%
\makeatother
\renewcommand{\rmdefault}{putscaled}
\renewcommand{\sfdefault}{phv}
\renewcommand{\ttdefault}{aett}
\usepackage[screen,panelleft,french,chocolate]{DFpdfscreen}
\definecolor{bulletcolor}{rgb}{0.8,0.4,0.4}
\definecolor{circcolor}{rgb}{0.8,0.1,0.1}
\definecolor{locallinks}{rgb}{0.7,0,0}
\usepackage[frenchb]{babel}
\FrenchItemizeSpacingfalse
\ifx\Frlabelitemi\undefined
\renewcommand{\FrenchLabelItem}{\textcolor{bulletcolor}{$\bullet$}}
\else
\renewcommand{\Frlabelitemi}{\textcolor{bulletcolor}{$\bullet$}}
\renewcommand{\Frlabelitemii}{\textcolor{circcolor}{{\boldmath$\circ$}}}
\fi
\hypersetup{pdfpagemode=FullScreen,linkcolor=locallinks,urlcolor=locallinks,
pagecolor=locallinks,filecolor=locallinks}
\emergencystretch 5cm
\def\pdftex{\emph{Pdftex}}
\def\pdflatex{\emph{Pdflatex}}
\def\postscript{Postscript}
\def\dvips{\emph{Dvips}}
\def\metapost{\emph{Metapost}}
\def\latex{\emph{Latex}}
\def\hypref{\emph{Hyperref}}
\title{\bfseries Pdf\LaTeX{}, un tour
d'horizon}
\author{\href{mailto:thierry.bouche@ujf-grenoble.fr}{Thierry Bouche}
\\ \href{mailto:michel.bovani@wanadoo.fr}{Michel Bovani}}
\date{17 mai 2001}
\emailid{michel.bovani@wanadoo.fr}
\urlid{www.gutenberg.eu.org/manif/gut2001/index.html}
\emblema{gutmetz.png}
\flushbottom
\begin{document}
\maketitle
\clearpage
\section{\pdftex, moteur et driver}
\pdftex{} est un moteur \TeX{} qui propose de nouvelles primitives.
\begin{itemize}
    \item l'une d'elles, \verb=\pdfoutput= permet d'activer un 
    \emph{driver} PDF, et d'obtenir une sortie {\`a} ce format ;
    \item il suffit pour cela de d{\'e}clarer \verb=\pdfoutput 1= ;
    \item de m{\^e}me on obtient avec \verb=\pdfoutput 0= une sortie au 
    format DVI traditionnel ;
    \item en cas de probl{\`e}me {\`a} la compilation, il importe d'avoir 
    pr{\'e}sent {\`a} l'esprit que le driver peut-{\^e}tre en cause ;
    \item dans le cadre d'une utilisation de \pdflatex{}, 
    les primitives de \pdftex{} sont appel{\'e}es de fa\c{c}on interne 
    par les packages : l'utilisateur en a rarement besoin\ldots
    \item les primitives \verb=\pdfpagewidth= \& \verb=\pdfpageheight= 
    peuvent n{\'e}anmoins s'av{\'e}rer utiles\ldots{} Il est conseill{\'e} de les 
    employer de la fa\c{c}on suivante :
    \begin{verbatim}
    \setlength{\paperwidth}{10 cm} \setlength{\paperheight}{18 cm}
    \pdfpagewidth\paperwidth \pdfpageheight\paperheight
    \end{verbatim}
    Cette fa\c{c}on de faire assure un pleine compatibilit{\'e} avec le 
    \emph{package} \texttt{hyperref} ;
    \item le fichier de configuration \verb=pdftex.cfg= permet de r{\'e}gler le 
    comportement par d{\'e}faut de \pdftex{}.
    \end{itemize}
    \pagebreak
\section{Le fichier de configuration}
Il s'agit du fichier \texttt{texmf/pdftex/config/pdftex.cfg}
\begin{verbatim}
output_format 1                 %%\pdfoutput        (integer)
compress_level 9                %%\pdfcompresslevel (1..9)
decimal_digits 2                %%\pdfdecimaldigits (1..5)
pk_resolution 600               %%\pdfpkresolution  (default 600)
%pdf12_compliant 0|1
%unique_resname  0|1
%protrude_chars  0|1|2
%adjust_spacing  0|1|2
%move_chars      0|1|2          %%\pdfmovechars     (integer)
image_resolution 300            %%\pdfimageresolution (default 72)
page_width 210truemm            %%\pdfpagewidth
page_height 297truemm           %%\pdfpageheight
horigin 1truein                 %%\pdfhorigin
vorigin 1truein                 %%\pdfvorigin
%% 
map pdftex.map                  %% Standard map  (default psfonts.map)
%% 
map +bsr.map                    %% Postscript CM/AMS fonts
%% 
map +bakoma-extra.map           %% extra Bakoma fonts
%%
%map +mathtime.map              %% YandY MathTime fonts
%%
%map +lucida.map                %% YandY Lucida BR fonts
map +apolline.map               %% Porchez Apolline
\end{verbatim}
\pagebreak
\section{\pdflatex{} et les fontes}
\pdftex{} permet d'utiliser toutes sortes de fontes, (bitmaps, 
truetype, \postscript{} type~1\ldots) mais les bitmaps sont mal 
support{\'e}s par Acrobat Reader ; il est donc pr{\'e}f{\'e}rable de se limiter 
aux formats vectoriels\ldots{}
\par
Noter que \pdftex{} poss{\`e}de sa propre 
syntaxe pour les fichiers \texttt{xxx.map} mais que celle de \dvips{} 
est en g{\'e}n{\'e}ral support{\'e}e.
\subsection{Emploi des fontes type 1}
\subsubsection{Fontes r{\'e}sidentes}
\begin{itemize}
\item Il existe 14 fontes r{\'e}sidentes (dans Acrobat Reader), qui sont 
\emph{Times} (4 graisses, en r{\'e}alit{\'e} \emph{Times New Roman}), 
\emph{Helvetica} (4 graisses, en r{\'e}alit{\'e} \emph{Arial}), \emph{Courier} (4 
graisses), \emph{Symbol} et \emph{Dingbats}. 
\item \pdftex{} ne charge 
jamais ces fontes dans le fichier PDF.
\item
Pour ces fontes les entr{\'e}es de \texttt{pdftex.map} sont analogues {\`a} 
celles de \texttt{psfonts.map}, par exemple pour \emph{Times} :
\begin{flushleft}
\ttfamily   ptmr8r Times-Roman "TeXBase1Encoding ReEncodeFont" <8r.enc
    \end{flushleft}
    \end{itemize}
\subsubsection{Fontes de l'installation}
\begin{itemize}
\item Les fontes Type~1 de l'installation sont en revanche charg{\'e}es (par 
d{\'e}faut partiellement) dans le fihier PDF ; 
\item l{\`a} encore les entr{\'e}es de 
 sont semblables pour \pdftex{} et \dvips{}. Par 
exemple pour Utopia et cmmi10 : 
\begin{flushleft}\ttfamily
   putri8r Utopia-Italic "TeXBase1Encoding ReEncodeFont" 
   <8r.enc\verb=\=\\
                  <putri8a.pfb\\[1ex]
   cmmi10 CMMI10 <CMMI10.pfb
    \end{flushleft}
 \end{itemize}
 \pagebreak
\subsubsection{Un cas particulier}
\begin{itemize}
\item Certaines fontes comme \emph{Palatino} sont r{\'e}sidentes dans les 
imprimantes \postscript{} (et donc ne sont pas charg{\'e}es par \dvips{}) 
sans faire partie des 14 fontes d'Acrobat Reader. 
\item Dans ce cas les 
entr{\'e}es sont diff{\'e}rentes pour \pdftex{} et \dvips{}
\begin{description}
    \item[\dvips{} :]\par {\ttfamily pplr8r Palatino-Roman "TeXBase1Encoding ReEncodeFont" 
    <8r.enc\\[1ex]
    pplbo8r Palatino-Bold ".167 SlantFont TeXBase1Encoding \verb=\=\\ ReEncodeFont" <8r.enc} 
    \item[\pdftex{} :]\par {\ttfamily pplr8r Palatino-Roman "TeXBase1Encoding ReEncodeFont" 
    \verb=\=\\ <8r.enc <pplr8a.pfb\\[1ex]
    pplbo8r Palatino-Bold ".167 SlantFont TeXBase1Encoding \verb=\=\\
    ReEncodeFont" <8r.enc <pplb8a.pfb}
    \end{description}
\item L'entr{\'e}e de \texttt{pdftex.map} pose un probl{\`e}me dans la mesure 
o{\`u} \emph{Palatino} est une fonte commerciale, qui a peu de chance de 
figurer dans une installation standard.
\item On pourra donc {\^e}tre amen{\'e} {\`a} employer les versions URW de ces 
fontes (qui elles sont gratuites), donc {\`a} remplacer ces entr{\'e}es par :
\begin{flushleft}\ttfamily
pplr8r URWPalladioL-Roma "TeXBase1Encoding ReEncodeFont" <8r.enc\verb=\=\\ 
<uplr8a.pfb\\[1ex]
pplbo8r URWPalladioL-Bold " .167 SlantFont TeXBase1Encoding \verb=\=\\ ReEncodeFont " 
<8r.enc <uplb8a.pfb
\end{flushleft}
\end{itemize}\pagebreak
\subsection{Le cas de Computer Modern}
\begin{itemize}
    \item les fontes CMR 7 bits existent donc au format Type~1, mais il est 
    n{\'e}cessaire pour en profiter d'avoir l'entr{\'e}e correspondante dans 
    \texttt{pdftex.cfg} ;
    \item la composition du fran\c{c}ais exige l'emploi de fontes 8~bits, 
    mais le recours {\`a} \verb=\usepackage[T1]{fontenc}= s{\'e}lectionne les 
    fontes de la famille EC, dont il n'existe pas de version Type~1 
    gratuite ;
    \item si l'on tient {\`a} employer Computer Modern, il est donc 
    n{\'e}cessaire de contourner ce probl{\`e}me
    \begin{itemize}
	\item soit en utilisant des fontes virtuelles : \emph{Remplacer par 
	exemple } \verb=\usepackage[T1]{fontenc}= par :\par
	-- \verb=\usepackage{aeguill}= \par\emph{ou} 
	\par
	-- \verb=\usepackage[cyr]{aeguill}= \par\emph{ou}
	\par
	-- \verb=\usepackage{zefonts}=,
\item soit en activant l'option \verb=-mltex= {\`a} la g{\'e}n{\'e}ration du 
format et en \emph{rempla\c{c}ant} \verb=\usepackage[T1]{fontenc}= par 
:\par 
-- \verb=\usepackage{mltex}=.
\end{itemize}
\end{itemize}
\pagebreak
\subsection{Le package \emph{pslatex}}
Le package \emph{pslatex} est bas{\'e} sur \emph{Times} et propose une 
alternative {\`a} Computer Modern. Il est fait pour un syst{\`e}me \og 
classique \fg{} (c'est-{\`a}-dire \TeX{} et \dvips{}) mais s'av{\`e}re 
utilisable avec \pdflatex{}, moyennant une petite modification\ldots
\begin{itemize}
    \item La police \emph{Courier} est condens{\'e}e \emph{via} l'emploi 
    d'une fonte virtuelle ;
    \item Cette police {\'e}tant r{\'e}sidente dans Acrobat Reader, ce genre 
    de chose reste hors de la port{\'e}e de \pdftex{} ;
    \item La solution la plus simple consiste {\`a} remplacer l'entr{\'e}e suivante (dans 
   \texttt{pcrr8rn.map})
   \begin{flushleft}\ttfamily
       pcrr8rn Courier ".85 ExtendFont TeXBase1Encoding ReEncodeFont"\verb=\=\\ <8r.enc
\end{flushleft}
par :
\begin{flushleft}\ttfamily
       pcrr8rn NimbusMonL-Regu ".85 ExtendFont TeXBase1Encoding \verb=\=\\
       ReEncodeFont" <8r.enc <ucrr8a.pfb
\end{flushleft}
\item Il est d'ailleurs possible de placer cette entr{\'e}e dans un fichier 
d{\'e}di{\'e} {\`a} \pdftex{} (par exemple \texttt{pdfcourier.map}) et d'ajouter 
la ligne
\begin{flushleft}\ttfamily
       map +pdfcourier.map
\end{flushleft}
dans \texttt{pdftex.cfg}.
\end{itemize}
\pagebreak
\section{Images et graphiques}
La bonne fa\c{c}on d'inclure des images avec \pdflatex{} est d'utiliser 
le package \emph{graphics} avec l'option \texttt{pdftex} :
\verb=\usepackage[pdftex]{color,graphicx}=.
\par
Cette option 
peut d'ailleurs {\^e}tre utilis{\'e}e globalement d{\`e}s l'appel de la classe, et 
l'on peut {\'e}galement fabriquer un fichier \texttt{graphics.cfg} qui 
g{\`e}re tout cela pour le mieux\ldots{} Par exemple :
\begin{verbatim}
\ifx\pdfoutput\undefined\ExecuteOptions{dvips}
\else\ifnum\pdfoutput > 0\ExecuteOptions{pdftex}
\else\ExecuteOptions{dvips}\fi\fi
\end{verbatim}
\subsection{Le fichier pdftex.def}
\begin{itemize}
    \item Le fichier \texttt{pdftex.def} fait partie du package 
    \emph{graphics} et lui permet de supporter \pdftex{} ;
    \item Il importe d'en poss{\'e}der une version {\`a} jour. La derni{\`e}re 
    version est disponible {\`a} l'url 
    \href{http\string://www.tug.org/applications/pdftex}{http\string://www.tug.org/applications/pdftex}
    \item Comme toujours dans \emph{graphics} les formats d'images 
    support{\'e}s sont d{\'e}finis par leurs extensions (il importe donc de 
    choisir la bonne)\ldots
    \begin{verbatim}
\ifnum\driver@release>3
    \ifnum\driver@release>5
    \def\Gin@extensions{.png,.pdf,.jpg,.mps,.tif}
    \@namedef{Gin@rule@.tif}#1{{tif}{.tif}{#1}}
    \@namedef{Gin@rule@.jpg}#1{{jpg}{.jpg}{#1}}
\else
    \def\Gin@extensions{.png,.pdf,.jpg,.mps}
    \@namedef{Gin@rule@.jpg}#1{{jpg}{.jpg}{#1}}
\fi
\else
    \def\Gin@extensions{.png,.pdf,.mps}
\fi
\end{verbatim}
\end{itemize}
\pagebreak
\subsection{Les formats support{\'e}s}
Les \hypertarget{imgfmt}{formats d'images} support{\'e}s par \pdftex{}, tous reconnus par
\emph{graphics} sont donc :
\begin{description}
\item[PNG :] \verb+\includegraphics[height=1.5cm]{gutmetz}+\par
PNG est un excellent format bitmap, qui peut {\^e}tre employ{\'e} {\`a} des 
r{\'e}solutions {\'e}lev{\'e}es, tout en restant compact.
\item[PDF :]\verb+\includegraphics[height=2.5cm]{euler}+
\pdftex{} ne supporte pas le format EPS, mais les vrais EPS 
vectoriels peuvent {\^e}tre convertis au format PDF gr{\^a}ce {\`a} l'ex{\'e}cutable 
\texttt{epstopdf} (script PERL ou programme natif) ou {\`a} Acrobat 
Distiller.
\item[JPG :]\verb+\includegraphics[height=2.5cm]{lion}+
\item[Metapost :]\verb+\includegraphics[height=2.5cm]{fig}+\par
L'image a {\'e}t{\'e} pr{\'e}sent{\'e}e ici m{\^e}me par Denis \bsc{Roegel}. Les fichiers 
issus de \metapost{} sont les seuls EPS support{\'e}s par \pdftex{}. Il importe de 
renommer le fichier avec l'extension \texttt{.mps}.
\item[TIFF :]\verb+\includegraphics[height=2.5cm]{dodo}+
\end{description}
\begin{center}\begin{tabular}{cccc}
    \includegraphics[height=2.5cm]{euler}&
\hyperlink{hr}{\includegraphics[height=2.5cm]{lion}}&
    \includegraphics[height=2.5cm]{fig}&
    \includegraphics[height=2.5cm]{dodo}\\
 \hyperref{demo.pdf}{images}{pdf}{\texttt{euler.pdf}}&
 \hyperref{demo.pdf}{images}{jpg}{\texttt{lion.jpg}}&
 \hyperref{demo.pdf}{images}{mps}{\texttt{fig.mps}}&
 \hyperref{demo.pdf}{images}{tif}{\texttt{dodo.tif}}
   \end{tabular}
\end{center}
   \pagebreak
\subsection{Le cas de pstricks}
Le package pstricks est tellement li{\'e} au format \postscript{} qu'il 
est ({\'e}videmment) impossible de l'utiliser avec \pdftex{}. Un 
contournement existe cependant, qui consiste {\`a} r{\'e}aliser une image EPS 
ind{\'e}pendante et {\`a} la convertir en PDF.\par
\begin{itemize}
\item On commence par compiler s{\'e}par{\'e}ment (avec \latex{}) un fichier comme 
celui-ci :
   \begin{verbatim}
\documentclass[a4paper]{article}
\pdfoutput 0
\usepackage{pstcol,pst-plot,pst-eps}
  \definecolor{violet}{rgb}{0.5,0,0.2}
  \definecolor{orange}{rgb}{0.8,0.5,0}
  \definecolor{darkred}{rgb}{0.8,0,0}
\begin{document}
 \TeXtoEPS
 \begin{pspicture}(-7,-6)(7,6)
    \psset{plotpoints=1000,gridlabels=10pt,
    gridwidth=0.6pt,subgridwidth=0.3pt,
    subgriddiv=5,xunit=1,yunit=1,labels=none,
    ticks=none,gridcolor=violet,subgridcolor=orange}
    \psgrid (0,0)(-7,-6)(7,6)
    \psplot[linecolor=darkred,linewidth=1pt]
    {-6.28}{6.28}{x 180 mul 3.1416 div .5 mul sin x 180 mul 
    3.1416 div sin add 3 mul}	
 \end{pspicture}
 \endTeXtoEPS
\end{document}
\end{verbatim}
\pagebreak
\item Le fichier obtenu est ensuite converti au format EPS {\`a} l'aide de la commande
\verb=dvips -E -o "curve.eps" "curve.dvi"= ;
\item On convertit \texttt{curve.eps} en \texttt{curve.pdf} 
(\texttt{epstopdf} ou Acrobat Distiller) ;
\item Reste {\`a} inclure l'image : 
\verb+\includegraphics[height=8cm]{curve}+
\end{itemize}
\begin{center}
   \includegraphics[height=8cm]{curve}
\end{center}
\pagebreak
\section{Le package \hypref{}}
Le package \hypref{} vous permet de cr{\'e}er facilement des documents 
hypertextes ; son d{\'e}veloppement est li{\'e} (au moins historiquement) {\`a} 
celui de \pdftex{}.
\subsection{\hypref{} facile}
Un simple appel au package \hypref{} fait automatiquement pas mal 
de choses :
\begin{itemize}
    \item les signets (\emph{bookmarks}) sont plac{\'e}s automatiquement pour les entr{\'e}es de table 
des mati{\`e}res ;
     \item des liens sont g{\'e}n{\'e}r{\'e}s automatiquement pour tout ce qui est 
r{\'e}f{\'e}ren\c{c}able en \latex{} standard (table des mati{\`e}res, appels de 
notes, r{\'e}f{\'e}rences {\`a} des {\'e}quations, {\`a} des pages\ldots) ;
  \item ces comportements sont largement et simplement configurables 
  soit par des options {\`a} l'appel du package soit gr{\^a}ce {\`a} la commande 
  \verb=\hypersetup= :
  \begin{itemize}
    \item pdfpagemode (=None, UseThumbs, UseOutlines, FullScreen) ;
    \item pdfstartview (=Fit, FitH, FitB, FitBH\ldots) ;
    \item pdffitwindow (=true, false) ;
    \item pdfpagelayout (=TwoColumsRight, TwoColumnLeft, OneColumn, 
    SinglePage) ;
    \item pdftoolbar (=true, false) ;
    \item pdfmenubar (=true, false) ;
    \item bookmarksopen (=true, false) ;
    \item bookmarksnumbered (=true, false) ;
    \item colorlinks (=true, false) ;
    \item pdfauthor (={texte}) ;
    \item pdftitle (={texte}), etc.
\end{itemize}
\end{itemize}
\pagebreak
\subsection{Utilisation avanc{\'e}e}
\begin{itemize} 
    \item On peut cr{\'e}er des liens internes gr{\^a}ce aux commandes 
    \verb=\hypertarget= (pour cr{\'e}er une \hypertarget{hr}{ancre}) et \verb=\hyperlink= 
    (pour \hyperlink{imgfmt}{r{\'e}f{\'e}rencer} cette ancre). On {\'e}crira par 
    exemple ici 
    \begin{verbatim}
        \hyperlink{imgfmt}{référencer}
	\end{verbatim}
	et l{\`a}
\begin{verbatim}
        \hypertarget{imgfmt}{formats d'images}
	\end{verbatim}	
    \item La commande \verb=\href= permet d'utiliser des URL 
    diverses (fichiers locaux, protocoles \texttt{http}, 
    \texttt{mailto}\ldots). On peut utiliser
    \begin{verbatim}
        \href{http://www.gutenberg.eu.org}{l'association GUTenberg}
	\end{verbatim}
	pour se connecter sur les pages de 
	\href{http://www.gutenberg.eu.org}{l'association GUTenberg} ou
\begin{verbatim}
        \href{mailto:president@gutenberg.eu.org}{président}
	\end{verbatim}
pour {\'e}crire {\`a} son \href{mailto:president@gutenberg.eu.org}{pr{\'e}sident} 
ou encore 
\begin{verbatim}
        \href{manual.pdf}{documentation d'\hypref{}}
	\end{verbatim}
pour ouvrir localement la \href{manual.pdf}{documentation d'\hypref{}}.
\item Pour r{\'e}f{\'e}rencer des pages pr{\'e}cises dans un fichier PDF, il est 
n{\'e}cessaire d'utiliser le couple \verb=\hyperdef=, \verb=\hyperref=. Par 
exemple on a utilis{\'e} lors de la pr{\'e}sentation des \hyperlink{imgfmt}{formats 
d'images} :
\begin{verbatim}
        \hyperdef{images}{pdf}{\LARGE PDF}
	\end{verbatim}
dans le document cible et
\begin{verbatim}
        \hyperref{demo.pdf}{images}{pdf}{\texttt{euler.pdf}}
	\end{verbatim}
dans le pr{\'e}sent document.
   \end{itemize}
\pagebreak

\tableofcontents

\end{document}






