% \iffalse meta-comment
%
% Copyright 1993 1994 1995 1996 1997 1998 1999
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
% This file is part of the LaTeX base system.
% -------------------------------------------
%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.2
% of this license or (at your option) any later version.
% The latest version of this license is in
%    http://www.latex-project.org/lppl.txt
% and version 1.2 or later is part of all distributions of LaTeX
% version 1999/12/01 or later.
%
% The list of all files belonging to the LaTeX base distribution is
% given in the file `manifest.txt'. See also `legal.txt' for additional
% information.
%
% \fi
% Filename: modguide.tex

\NeedsTeXFormat{LaTeX2e}[1995/12/01]

\documentclass{ltxguide}[1995/11/28]

\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}


\newcommand{\reasonsection}[1]{\subsubsection*{\it #1}}

\newcommand{\nstex}{\textsf{NS-TeX}}

\setcounter{secnumdepth}{-1}

\title{Modifier \LaTeX\thanks{Titre original~: <<~Modifying \LaTeXe~>>}}

\author{\copyright~Copyright 1995, \LaTeX3 Project Team\thanks{traduit par
    S.~\bsc{Le Callonnec} (\texttt{<sebastien.le-callonnec@eleve.emn.fr>}) le 21 mars 2000}\\
   Tous droits r\'eserv\'es.}

\date{12 d\'ecembre 1995}

\begin{document}

\maketitle

\tableofcontents

\begin{abstract}
  Ce document a \'et\'e r\'ealis\'e en r\'eponse \`a l'affirmation  que les
  conditions de modification et de distribution pour les fichiers constituant le
  Nouveau syst\`eme standard \LaTeX{} devraient \^etre similaires \`a celles
  indiqu\'ees par la Version~2 de la <<~\textsc{GNU} General Public Licence~>>,
  telle qu'elle a \'et\'e publi\'ee par la Free Software Foundation.
\end{abstract}

\section{Introduction}
\label{sec:intro}

Cet article d\'ecrit les principes \`a la base de notre
politique de distribution et de modification des fichiers
constituant le syst\`eme \LaTeX{}. Il a \'et\'e \'ecrit \`a
l'issue de discussions d\'etaill\'ees sur les probl\`emes
que posent la gestion et la maintenance d'un syst\`eme de
traitement de documents largement distribu\'e et utilis\'e
par diverses personnes pour de nombreuses applications. Ces
discussions ont impliqu\'e les utilisateurs, les
mainteneurs d'installation g\'erant \LaTeX{} et
diff\'erentes organisations qui le distribuent. Ces
discussions se poursuivent et nous esp\'erons que les
id\'ees expos\'ees dans cet article apporteront une
contribution utile au d\'ebat.


Notre volont\'e est que \LaTeX{} soit un syst\`eme sur
lequel les utilisateurs de tout type puissent compter pour
satisfaire leurs besoins. Un tel syst\`eme doit \^etre
stable et maintenu de mani\`ere suivie. Ceci implique qu'il
doit \^etre raisonnablement facile \`a maintenir, sinon il
ne sera tout simplement pas maintenu du tout. Voici un
r\'esum\'e de notre philosophie fondamentale~:
\begin{quote}
  Nous pensons que la libert\'e de compter sur un standard largement diffus\'e
  pour l'\'echange de document et le formatage est aussi importante que la
  libert\'e de faire des exp\'eriences avec le contenu des fichiers.

  Nous adoptons ainsi une politique similaire \`a celle que  Donald~\bsc{Knuth}
  applique aux modifications du syst\`eme \TeX{} sous-jacent~: certains fichiers
  et leur nom font partie du syst\`eme et ainsi, le contenu des ces fichiers ne
  devrait pas \^etre chang\'e \`a moins que les conditions suivantes soient
  satisfaites~:
  \begin{itemize}
  \item ils sont clairement identifi\'es comme n'appartenant plus au syst\`eme
  standard~;
  \item le nom du fichier est chang\'e.
  \end{itemize}
\end{quote}


\section{Le syst\`eme}
\label{sec:sys}

En d\'eveloppant cette philosophie et les limites qui en d\'ecoulent sur la
fa\c{c}on dont les changements peuvent \^etre faits sur le syst\`eme, nous avons
\'et\'e profond\'ement influenc\'es par les faits suivants concernant les
utilisations tr\`es r\'epandues et tr\`es diversifi\'ees du syst\`eme  \LaTeX{}.
\begin{enumerate}
\item  \LaTeX{} n'est pas simplement un syst\`eme de traitement de document~; il
d\'efinit \'egalement un langage pour l'\'echange de documents.

\item Les fichiers de classe de document standard et quelques autres
d\'efinissent un formatage particulier pour un document.

\item  Les packages que nous maintenons d\'efinissent une interface de document
particuli\`ere et, dans certains cas, un formatage particulier de certaines
parties d'un document.

\item Les interfaces entre diff\'erentes parties du syst\`eme \LaTeX{} sont
tr\`es complexes et il est par cons\'equent tr\`es difficile de v\'erifier
qu'un changement apport\'e \`a un fichier n'affecte pas la fonctionnalit\'e non
seulement du fichier, mais \'egalement d'autres parties du syst\`eme
connect\'ees de mani\`ere peu \'evidente au fichier qui a \'et\'e chang\'e.
\end{enumerate}

Ceci nous conduit au principe g\'en\'eral~:
\begin{quote}
  sauf rares exceptions, si vous changez le contenu d'un fichier, alors la
  version modifi\'ee doit porter un nom de fichier diff\'erent.
\end{quote}

Nous ne souhaitons certainement pas emp\^echer les gens de faire des
exp\'eriences avec le code de diff\'erentes fa\c{c}ons et de l'adapter \`a leurs
propres besoins.  Cependant, nous nous inqui\'etons du fait que toute
distribution de modifications du code soit clairement identifi\'ee comme ne faisant pas
partie de la distribution standard.  Le libell\'e et la forme des conditions de
distribution sont ainsi flexibles, mais seulement sous la contrainte de
pr\'eserver \LaTeX{} comme un produit standardis\'e et auquel on peut se fier
pour les raisons d\'ecrites ci-dessus~: l'\'echange et le formatage de
documents.


\section{Quelques exemples}
\label{sec:expl}

Nous allons d\'evelopper ici les arguments qui nous ont conduits \`a la
conclusion ci-dessus.


\reasonsection{Le d\'eveloppement s\'epar\'e est consid\'er\'e comme nuisible~!}
\label{sec:ja}

Dans beaucoup de domaines, l'utilisation de \LaTeX{} comme langage de
communication est aussi importante que son excellente capacit\'e de
composition~; c'est une consid\'eration importante pour une large population
d'auteurs, d'\'editeurs de journaux, archivistes, etc.

Associ\'e \`a ce probl\`eme de portabilit\'e se trouve le fait que les noms de
fichier font partie de la syntaxe utilisateur final.

Comme exemple concret, prenons le package <<~array.sty~>>
de la s\'erie <<~tools~>>.  Une fonction haut niveau a
\'et\'e ajout\'ee \`a ce fichier fin 1994 et un document
utilisant cette fonction peut contenir la ligne~:
\begin{verbatim}
   \usepackage{array}[1994/10/16]
\end{verbatim}

En fournissant l'argument optionnel, l'auteur du document indique qu'une version
du fichier  \texttt{array.sty} post\'erieure \`a cette date est requise pour
ex\'ecuter ce document sans erreur.

Cette fonction serait compl\`etement sans int\'er\^et si
nous autorisions la distribution d'une autre version du
package array sous le m\^eme nom, car cela signifierait
qu'il pourrait y avoir des fichiers en circulation d'une
date post\'erieure mais sans la nouvelle fonctionnalit\'e.
Si le document \'etait trait\'e en utilisant cet <<~autre
array~>>, alors il produirait tr\`es certainement des
erreurs <<~commande ind\'efinie~>> et ne serait sans doute
pas compilable du tout.


\reasonsection{Qu'y a-t-il dans un nom de fichier~?}
\label{sec:jb}

Dans un langage \`a balises pur, tel que SGML, il est assez
clair que le contr\^ole de la pr\'esentation finale
r\'eside chez le receveur du document et non chez l'auteur.

Cependant, \`a la fa\c{c}on dont \LaTeX{} est le plus souvent utilis\'e en
pratique, il est \'evident que la plupart des utilisateurs (du moins lorsqu'ils
utilisent les classes et packages standard) comptent sur le fait que le
formatage sera pr\'eserv\'e lorsqu'ils envoient le document \`a un autre site.

Par exemple, supposons que vous produisiez un document pour
<<~camera-ready-copy~>>, utilisation encore la plus commune de \LaTeX{} dans
l'\'edition, employant la classe <<~article~>>, et que vous mettez au point le
formatage en ajoutant, par exemple, des sauts de lignes explicites, etc. pour
assurer qu'il rentre dans la limite de 8 pages impos\'e par un journal ou un
compte-rendu de conf\'erence.


Il est alors envoy\'e \`a l'\'editeur ou \`a un r\'epondant
qui, sans que personne ne le sache, a une version non
standard du fichier de classe <<~article~>> faisant passer
le document \`a 9 pages.  La cons\'equence de ceci sera, au
minimum, une \'enorme perte de temps pour que tous les gens
impliqu\'es comprennent ce qui a cloch\'e~; cela m\`enera
\'egalement tr\`es certainement chacun \`a attribuer \`a
l'autre la responsabilit\'e de la chose pour une
incompatibilit\'e qui n'\'etait en fait d\^ue qu'\`a une
mauvaise politique de distribution.

Il vous faut \'egalement remarquer que, pour la plupart des utilisateurs, la
version du fichier de classe <<~article~>> employ\'ee est choisie par le
mainteneur d'un site ou les compileurs de distribution CD-ROM.  Pour la plupart
des utilisateurs, les symboles \texttt{a\,r\,t\,i\,c\,l\,e} dans~:
\begin{verbatim}
   \documentclass{article}
\end{verbatim}
font tout autant partie de la syntaxe \LaTeX{} que les symboles
\texttt{1\,2\,p\,t} dans~:
\begin{verbatim}
   \hspace{12pt}
\end{verbatim}
Ils devraient donc ainsi tout deux d\'efinir un formatage standard plut\^ot que
produire tant\^ot une page suppl\'ementaire, tant\^ot un espace de 5 pt plus
grand.

Les utilisateurs comptent sur le fait que la commande (ou l'entr\'ee du menu)
<<~LaTeX~>> produise un \LaTeX{} complet\`ement standard, incluant le fait
qu'<<~article>> est l'<<~article standard~>>.  Ils ne seraient pas ravis du tout
si la personne qui a install\'e et maintient \LaTeX{} pour eux \'etait
autoris\'ee \`a personnaliser <<~article~>> tous les deux jours afin
d'am\'eliorer (selon lui ou elle) la mise en page, ou parce qu'un autre
utilisateur souhaitait \'ecrire dans une autre langue ou composer un document
avec des fontes diff\'erentes.

\reasonsection{\TeX{} lui-m\^eme}
\label{sec:tex}

Nous avons model\'e nos politiques sur celles du syst\`eme \TeX{} car celui-ci a
\'et\'e largement reconnu comme un syst\`eme de composition stable et de haute
qualit\'e.

La politique de distribution initi\'ee par
Donald~\bsc{Knuth} pour \TeX{} a les aspects suivants~:
\begin{itemize}
\item il existe une m\'ethode clairement sp\'ecifi\'ee pour le changement de
parties du programme en utilisant des <<~fichiers de
changement~>> ;
\item bien que des changements arbitraires soient permis, le programme r\'esultant
peut \^etre appel\'e  \TeX{} seulement si ses
fonctionnalit\'es sont pr\'ecis\'ement les m\^emes que
\TeX{} (\emph{i. e.}~ni plus ni moins) dans tous les
domaines importants ;
\item il y a beaucoup de fichiers dans le syst\`eme qui ne peuvent pas \^etre
chang\'es du tout (sans changer le nom)~: les exemples en sont le fichier
\texttt{plain.tex} et les fichiers associ\'es aux fontes, y compris les fichiers
source de Metafont.
  \end{itemize}


\reasonsection{Complexit\'e de maintenance}
\label{sec:compl}

Notre exp\'erience dans la maintenance de \LaTeX{} nous a
montr\'e \`a quel point les  interactions entre
diff\'erentes parties du syst\`eme sont complexes.

 Nous avons ainsi, \`a l'aide des rapports d'erreur que vous nous avez soumis,
 d\'evelopp\'e un large \'eventail de fichiers test que nous lan\c{c}ons pour
 v\'erifier les effets que chaque changement provoque. Un pourcentage non
 n\'egligeable de ces s\'eries de tests donne des r\'esultats inattendus et d\'emontrent des d\'ependances insoup\c{c}onn\'ees dans le syst\`eme.


\section{Quelques garanties}
\label{sec:conc}

Nous n'essayons certainement pas d'\'emp\^echer les utilisateurs de reformater
les documents \LaTeX{} de la mani\`ere qu'ils le souhaitent. Il y a de
nombreuses fa\c{c}ons de personnaliser des documents qui vous arrivent selon
votre style personnel sans changer le contenu des fichiers \LaTeX{} standard~;
en effet, la libert\'e est un des nombreux avantages du syst\`eme. La mani\`ere
la plus simple pour faire ceci est de remplacer
\begin{quote}
\verb|\documentclass{article}|\quad par\quad
\verb|\documentclass{myart}|
\end{quote}

Nous ne souhaitons pas non plus d\'ecourager la production
de nouveaux packages am\'eliorant la fonctionnalit\'e ou
l'impl\'ementation de ceux que nous distribuons. Tout ce
que nous demandons est que, dans l'int\'er\^et de tous les
utilisateurs de \LaTeX, vous donniez \`a votre package ou
votre classe magnifiquement am\'elior\'e un autre nom.

\section{Possibilit\'es de configuration}
\label{sec:conposs}

Le format du syst\`eme \LaTeX{} standard peut \^etre
configur\'e de plusieurs fa\c{c}ons afin de s'adapter aux
besoins et aux ressources d'une installation. Par exemple,
le chargement des fontes et de leurs tables peut \^etre
personnalis\'e afin de faire co\"incider les formes, les
familles et les encodages normalement utilis\'es en mode
texte.  En \'ecrivant \'egalement des fichiers de
d\'efinition de fontes appropri\'es, les tables de fontes
peuvent \^etre elles-m\^eme initialis\'ees pour tirer
profit des fontes et tailles disponibles.  Le chargement de
motifs de c\'esure peut \^etre adapt\'e pour prendre en
compte les langues utilis\'ees~; ceci doit \^etre fait lors
de la cr\'eation du format car c'est en effet le seul
moment o\`u les motifs peuvent \^etre charg\'es.

Une liste compl\`ete de ces  possibilit\'es de
configuration peut \^etre trouv\'ee dans le guide
\emph{Options de configuration pour} \LaTeXe{}
(\texttt{cfgguide.tex}).  Cependant, comme il y est dit et
r\'ep\'et\'e, le nombre de possibilit\'es de configuration
est strictement limit\'e~; nous esp\'erons qu'apr\`es avoir
lu le pr\'esent document, vous comprendrez les raisons de
cette d\'ecision. Une cons\'equence de ceci est qu'il
n'existe aucune disposition pour la cr\'eation d'un fichier
de configuration g\'en\'eral, ou pour l'ajout de code
juste avant le |\dump| du fichier de format.

Ceci \'etait une d\'ecision d\'elib\'er\'ee et nous
esp\'erons  que tout le monde (oui, vous y compris~!)
soutiendra cette intention. Il y aura sinon un rapide
retour \`a la situation m\^eme rencontr\'ee avec plusieurs
versions incompatibles de \LaTeX~2.09, qui nous a pouss\'es
\`a l'origine \`a produire \LaTeXe{}~: le nouveau, et
\emph{le seul}, <<~\LaTeX{} standard~>>.  Ceci rendra
\LaTeX{} non maintenable et, de fait, non maintenu (pas par
nous, en tous les cas).

\begin{quote}
  Par cons\'equent, vous ne devriez pas employer les fichiers de configuration
  ou d'autres parties de la  distribution de mani\`ere abusive pour produire des
  versions non standard de
  \LaTeX{}.
\end{quote}

Certaines des configurations autoris\'ees peuvent
r\'esulter en un syst\`eme qui peut produire des documents
qui ne sont plus <<~formatage compatibles~>>~; par exemple,
l'utilisation de fontes par d\'efaut diff\'erentes produira
tr\`es probablement des sauts de lignes et de pages
diff\'erents. Si vous installez sur un syst\`eme
multi-utilisateurs configur\'e de telle mani\`ere qu'il ne
soit pas <<~formatage compatible~>>, il vous faut alors
consid\'erer les attentes des utilisateurs qui ont besoin
de cr\'eer des documents portables. Une bonne fa\c{c}on de
r\'epondre \`a leurs besoins est de fournir de plus une
forme standard de \LaTeX{}, sans personnalisations
<<~formatage incompatibles~>>.


\section{Conditions de modification}
\label{sec:modcon}

Il est possible que vous ayez besoin de produire un
syst\`eme de traitement de document bas\'e sur le \LaTeX{}
standard mais avec des fonctionalit\'es qui ne peuvent
\^etre impl\'ement\'ees en utilisant les fichiers de
configuration approuv\'es et se conformant aux restrictions
s'appliquant au code qui y est autoris\'e. En d'autres
mots, vous pouvez avoir besoin d'un syst\`eme suffisamment
distinct du \LaTeX{} Standard qu'il n'est pas possible de
le cr\'eer en utilisant les options de configuration que
nous fournissons ou en produisant de nouvelles classes et
packages.

Si vous produisez un tel syst\`eme, alors, pour les raisons d\'ecrites ci-avant,
vous devriez vous assurer que votre syst\`eme soit clairement distingu\'e du
 \LaTeX{} Standard de toutes les mani\`eres possibles, y compris les suivantes~:


\begin{enumerate}
\item
  Donnez \`a votre syst\`eme un nom distinct, tel que \nstex, qui le
  diff\'erencie clairement de \LaTeX{}.

\item
  Assurez-vous qu'il ne contienne aucun fichier avec le m\^eme nom qu'un fichier
  de la distribution standard mais avec un contenu diff\'erent.
  (Si ce n'est pas possible, il vous faut alors~:
  \begin{itemize}
  \item
    vous assurer qu'on ne puisse pas acc\'eder accidentellement aux fichiers
    provenant du sys\`eme non \LaTeX{} lors de l'utilisation du \LaTeX{} standard~;
  \item vous assurer que chaque fichier du syst\`eme non-\LaTeX{} s'identifie
  clairement comme tel sur le terminal et dans le fichier de log.)
  \end{itemize}

\item
  Assurez-vous que la m\'ethode utilis\'ee pour lancer votre syst\`eme est clairement
\label{mcon:command}
  distincte de celle utilis\'ee pour lancer le \LaTeX{} Standard, par exemple en
  utilisant un nom de commande ou une entr\'ee de menu qui n'est clairement pas
  \texttt{latex}
  (ou \texttt{LaTeX} etc).

\item
  Assurez-vous que, quand un fichier est trait\'e par votre syst\`eme,
  l'utilisation d'un  \LaTeX{} non-standard est clairement d\'eclar\'ee par
  n'importe quel moyen appropri\'e.

\item Assurez-vous que ce qui est \'ecrit au d\'ebut du fichier de log montre
clairement que votre syst\`eme a \'et\'e utilis\'e et non \LaTeX{} Standard.
  Consultez le fichier \texttt{cfgguide.tex} pour savoir comment faire cela.

\item
 Expliquez clairement aux utilisateurs que les rapports de bogues concernant
 votre syst\`eme ne doivent pas \^etre envoy\'es aux mainteneurs du
 \LaTeX{} Standard.
\end{enumerate}

\subsection*{Note aux administrateurs syst\`eme}

Si vous installez une version non-standard (modifi\'ee) de \LaTeX{} sur un site
multi-utilisateur, veillez alors s'il vous pla\^it \`a installer le \LaTeX{}
Standard et observer les conditions \'enum\'er\'ees ci-dessus, et tout
particuli\`erement \ref{mcon:command}.


\section{Que pensez-vous~?}
\label{sec:you}

Votre opinion sur les probl\`emes soulev\'es dans ce
document nous int\'eresse~; la meilleure fa\c{c}on de nous
faire savoir ce que vous pensez et discuter vos id\'ees
avec d'autres est de rejoindre la liste  \texttt{LaTeX-L}
et y envoyer vos commentaires. Pour s'inscrire sur cette
liste, envoyez \`a~:
\begin{verbatim}
   listserv@urz.uni-heidelberg.de
\end{verbatim}
la ligne suivante~:
\begin{verbatim}
   subscribe LATEX-L <votre prénom> <votre nom>
\end{verbatim}

\end{document}
