# Gabarit (mise en page)

Un gabarit, souvent nommé template ou layout, est un patron de mise en page où l'on place images et textes.
Aussi, il est souvent utilisé de manière répétitive pour créer des documents présentant une même structure.
On parle aussi de patron comme en couture ou bien, parfois, de grille.

## Presse traditionnelle

Dans la presse traditionnelle, un gabarit est conçu d'abord pour donner une forme cohérente à un journal.
On définit un ou plusieurs gabarits qui seront utilisés dans une publication puis réutilisés durant différents numéros. Il a pour but de rendre claire la lecture et plus facile la conception. Les contenus, qu'il s'agisse d'images (logos, illustrations) ou de textes (titres, légendes, colonnes de textes, etc.) seront placés à des endroits précis.
Les personnes chargées de la mise en page ont ensuite pour travail d'assembler le gabarit et le contenu fourni par les différents autres acteurs.

## Template informatique

Par extension, en informatique, un template est un moyen de séparer le fond (le contenu informationnel) de la forme (la manière dont il est présenté).
Très utilisé dans la conception de sites web, un template agit comme un modèle (une structure) dans lequel seuls certains éléments sont modifiables (le contenu et le style).
Cela facilite la conception et la mise à jour des sites, aussi bien sur le contenu que sur la présentation :
* changer la charte graphique du site revient à changer le template et cela met à jour toutes les pages du site ;
* ajouter une page ne consiste plus qu'à en écrire le contenu.
SPIP, phpBB, Zope, Joomla, WordPress, Postnuke, PHPBoost, Phorum, KwsPHP, Ixprim, eZ Publish et de nombreux CMS utilisent nativement des gabarits.
Les moteurs de templates sont les outils utilisant les templates pour en générer les fichiers textes (HTML, code source, etc.). Chacun dispose de son propre langage de programmation limité permettant de décrire le template, à l'aide de structures de contrôle (telles que if, foreach, etc.) ainsi que de réaliser des opérations simples sur les données (récupérer la sous-chaîne d'une chaîne de caractères, supprimer des caractères indésirables pour éviter des attaques de type cross-site scripting sur un site web, etc.). Ces langages étant la plupart du temps interprétés et dynamiques, ils sont considérés comme des langages de script.

## Les feuilles de style

De plus en plus, la présentation d'une page Web est reléguée vers les feuilles de style (CSS : Cascading Style Sheets ou feuilles de style en cascade) externes à la page.
Les templates ne sont donc plus seulement censés permettre une séparation entre la structure et la présentation mais aussi une séparation entre le code HTML ou XHTML et le code PHP (ou autre langage de développement côté serveur).
On obtient ainsi une structure de site possédant d'un côté les traitements de données (calculs, connexion à des bases de données, sécurité) et de l'autre le « langage » de restitution des données produites.
Cette séparation facilite le travail en équipe et les mises à jour soit du côté du code PHP soit du côté du code HTML puisque chacune des deux parties peut être modifiée sans affecter l'autre.
Les templates, utilisés conjointement à des feuilles de style efficaces, permettent de gérer la publication d'informations sur plusieurs supports différents.

## Utilisation dans les logiciels de bureautique

La mise en page d'un document bureautique (traitement de texte, présentation, feuille de calcul, e-mail) est définie à l'aide d'un modèle. Les modèles personnalisés permettent à un groupe d'appliquer une mise en page spécifique en fonction de la charte graphique du groupe.
Les modèles, utilisés conjointement à des feuilles de style efficaces, permettent de gérer la publication d'informations sur plusieurs supports différents.