diff --git a/.gitattributes b/.gitattributes
index 32ecd53c2e29fcfce0bd545ccb4339a99560bd50..cb0a3e3e6a3dab6f6d6abdcd0a4f12a33d80a348 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -9,6 +9,8 @@ dist/inc-head.html -text
 dist/inc-petition.html -text
 dist/inc-pied.html -text
 dist/inc-rubriques.html -text
+dist/modeles/pagination_dist.html -text
+dist/modeles/pagination_page.html -text
 dist/polices/dustismo-license.txt -text svneol=unset#application/octet-stream
 dist/polices/dustismo.ttf -text
 dist/polices/dustismo_bold.ttf -text
diff --git a/dist/modeles/pagination_dist.html b/dist/modeles/pagination_dist.html
new file mode 100644
index 0000000000000000000000000000000000000000..39f4bd472ef9b7554bc5a7ca0af7ceb461be4c61
--- /dev/null
+++ b/dist/modeles/pagination_dist.html
@@ -0,0 +1,74 @@
+#ENV{bloc_ancre}
+[<a href='[(#ENV{url}|parametre_url{#ENV{debut},''})]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|>{1}|?{'...',''})</a> |]
+
+[(#ENV{premiere}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|moins{1}|mult{#ENV{pas}})</span>]
+	][(#ENV{premiere}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|moins{1}|mult{#ENV{pas}})</a>]
+	][(#ENV{premiere}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{1}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{1}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{1}|moins{1}|mult{#ENV{pas}})</span>]
+	][(#ENV{premiere}|plus{1}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{1}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{1}|moins{1}|mult{#ENV{pas}})</a>]
+	][(#ENV{premiere}|plus{1}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{2}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{2}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{2}|moins{1}|mult{#ENV{pas}})</span>]
+	][(#ENV{premiere}|plus{2}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{2}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{2}|moins{1}|mult{#ENV{pas}})</a>]
+	][(#ENV{premiere}|plus{2}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{3}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{3}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{3}|moins{1}|mult{#ENV{pas}})</span>]
+	][(#ENV{premiere}|plus{3}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{3}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{3}|moins{1}|mult{#ENV{pas}})</a>]
+	][(#ENV{premiere}|plus{3}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{4}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{4}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{4}|moins{1}|mult{#ENV{pas}})</span>]
+	][(#ENV{premiere}|plus{4}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{4}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{4}|moins{1}|mult{#ENV{pas}})</a>]
+	][(#ENV{premiere}|plus{4}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{5}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{5}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{5}|moins{1}|mult{#ENV{pas}})</span>]
+	][(#ENV{premiere}|plus{5}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{5}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{5}|moins{1}|mult{#ENV{pas}})</a>]
+	][(#ENV{premiere}|plus{5}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{6}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{6}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{6}|moins{1}|mult{#ENV{pas}})</span>]
+	][(#ENV{premiere}|plus{6}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{6}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{6}|moins{1}|mult{#ENV{pas}})</a>]
+	][(#ENV{premiere}|plus{6}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{7}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{7}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{7}|moins{1}|mult{#ENV{pas}})</span>]
+	][(#ENV{premiere}|plus{7}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{7}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{7}|moins{1}|mult{#ENV{pas}})</a>]
+	][(#ENV{premiere}|plus{7}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{8}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{8}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{8}|moins{1}|mult{#ENV{pas}})</span>]
+	][(#ENV{premiere}|plus{8}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{8}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{8}|moins{1}|mult{#ENV{pas}})</a>]
+	][(#ENV{premiere}|plus{8}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{9}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{9}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{9}|moins{1}|mult{#ENV{pas}})</span>]
+	][(#ENV{premiere}|plus{9}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{9}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{9}|moins{1}|mult{#ENV{pas}})</a>]
+	][(#ENV{premiere}|plus{9}|<{#ENV{derniere}}|?{'|',''})]
+]
+[| <a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{nombre_pages}|moins{1}|mult{#ENV{pas}}})]##ENV{ancre}' class='lien_pagination'>(#ENV{derniere}|<{#ENV{nombre_pages}}|?{'...',''})</a>]
diff --git a/dist/modeles/pagination_page.html b/dist/modeles/pagination_page.html
new file mode 100644
index 0000000000000000000000000000000000000000..7cab2f7fa4fc3dd5cbb2c684d0a1e7e2ff74f794
--- /dev/null
+++ b/dist/modeles/pagination_page.html
@@ -0,0 +1,74 @@
+#ENV{bloc_ancre}
+[<a href='[(#ENV{url}|parametre_url{#ENV{debut},''})]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|>{1}|?{'...',''})</a> |]
+
+[(#ENV{premiere}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere})</span>]
+	][(#ENV{premiere}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere})</a>]
+	][(#ENV{premiere}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{1}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{1}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{1})</span>]
+	][(#ENV{premiere}|plus{1}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{1}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{1})</a>]
+	][(#ENV{premiere}|plus{1}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{2}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{2}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{2})</span>]
+	][(#ENV{premiere}|plus{2}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{2}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{2})</a>]
+	][(#ENV{premiere}|plus{2}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{3}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{3}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{3})</span>]
+	][(#ENV{premiere}|plus{3}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{3}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{3})</a>]
+	][(#ENV{premiere}|plus{3}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{4}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{4}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{4})</span>]
+	][(#ENV{premiere}|plus{4}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{4}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{4})</a>]
+	][(#ENV{premiere}|plus{4}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{5}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{5}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{5})</span>]
+	][(#ENV{premiere}|plus{5}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{5}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{5})</a>]
+	][(#ENV{premiere}|plus{5}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{6}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{6}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{6})</span>]
+	][(#ENV{premiere}|plus{6}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{6}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{6})</a>]
+	][(#ENV{premiere}|plus{6}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{7}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{7}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{7})</span>]
+	][(#ENV{premiere}|plus{7}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{7}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{7})</a>]
+	][(#ENV{premiere}|plus{7}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{8}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{8}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{8})</span>]
+	][(#ENV{premiere}|plus{8}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{8}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{8})</a>]
+	][(#ENV{premiere}|plus{8}|<{#ENV{derniere}}|?{'|',''})]
+]
+[(#ENV{premiere}|plus{9}|<={#ENV{derniere}}|?{' ',''})[
+	(#ENV{premiere}|plus{9}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{premiere}|plus{9})</span>]
+	][(#ENV{premiere}|plus{9}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{9}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{9})</a>]
+	][(#ENV{premiere}|plus{9}|<{#ENV{derniere}}|?{'|',''})]
+]
+[| <a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{nombre_pages}|moins{1}|mult{#ENV{pas}}})]##ENV{ancre}' class='lien_pagination'>(#ENV{derniere}|<{#ENV{nombre_pages}}|?{'...',''})</a>]
diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index 0ccc676eb16a0f21d35fc2d0f07053a9f1c42d72..b0aeceba21b484ec39994dc336e7369ec372b495 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -79,7 +79,7 @@ function image_filtrer($args){
 	$texte = array_shift($args);
 	if (!$texte) return;
 	// Cas du nom de fichier local
-	if (preg_match(',^'._DIR_IMG.',', $texte)) {
+	if (preg_match(',^('._DIR_IMG . '|'. _DIR_IMG_PACK .'),', $texte)) {
 		if (!@file_exists($texte)) {
 			spip_log("Image absente : $texte");
 			return '';
@@ -1367,13 +1367,6 @@ function calcul_bornes_pagination($max, $nombre, $courante) {
 	return array($premiere, $derniere);
 }
 
-function pagination_item($num, $txt, $pattern, $lien_base, $debut, $ancre) {
-	$url = parametre_url($lien_base, $debut, $num);
-	return str_replace('@url@', $url.'#'.$ancre,
-		str_replace('@item@', $txt,
-		$pattern));
-}
-
 //
 // fonction standard de calcul de la balise #PAGINATION
 // on peut la surcharger en definissant dans mes_fonctions :
@@ -1382,7 +1375,7 @@ function pagination_item($num, $txt, $pattern, $lien_base, $debut, $ancre) {
 
 define('PAGINATION_MAX', 10);
 
-function calcul_pagination($total, $nom, $pas, $liste = true) {
+function calcul_pagination($total, $nom, $pas, $liste = true, $modele='dist') {
 	static $ancres = array();
 	$bloc_ancre = "";
 	
@@ -1394,24 +1387,28 @@ function calcul_pagination($total, $nom, $pas, $liste = true) {
 	$separateur = '&nbsp;| ';
 
 	$debut = 'debut'.$nom;
+	$ancre='pagination'.$nom;
+
+	// n'afficher l'ancre qu'une fois
+	if (!isset($ancres[$ancre]))
+		$bloc_ancre = $ancres[$ancre] = "<a name='$ancre' id='$ancre'></a>";
+		
+	$nombre_pages = floor(($total-1)/$pas)+1;
 
 	$pagination = array(
-		'lien_base' => parametre_url(self(),'fragment',''), // nettoyer l'id ahah eventuel
+		'debut' => 'debut'.$nom,
+		'url' => parametre_url(self(),'fragment',''), // nettoyer l'id ahah eventuel
 		'total' => $total,
 		'position' => intval(_request($debut)),
 		'pas' => $pas,
-		'nombre_pages' => floor(($total-1)/$pas)+1,
+		'nombre_pages' => $nombre_pages,
 		'page_courante' => floor(intval(_request($debut))/$pas)+1,
 		'lien_pagination' => '<a href="@url@" class="lien_pagination">@item@</a>',
-		'lien_item_courant' => '<span class="on">@item@</span>'
+		'lien_item_courant' => '<span class="on">@item@</span>',
+		'ancre' => $ancre,
+		'bloc_ancre' => $bloc_ancre
 	);
 
-	$ancre='pagination'.$nom;
-
-	// n'afficher l'ancre qu'une fois
-	if (!isset($ancres[$ancre]))
-		$bloc_ancre = $ancres[$ancre] = "<a name='$ancre' id='$ancre'></a>";
-
 	// Pas de pagination
 	if ($pagination['nombre_pages']<=1)
 		return '';
@@ -1426,44 +1423,13 @@ function calcul_pagination($total, $nom, $pas, $liste = true) {
 		PAGINATION_MAX,
 		$pagination['nombre_pages'],
 		$pagination['page_courante']);
-
-	$texte = '';
-
-	if ($premiere > 2)
-		$texte .= pagination_item('',
-			'...',
-			$pagination[
-				($i != $pagination['page_courante']) ?
-				'lien_pagination' : 'lien_item_courant'
-			],
-			$pagination['lien_base'], $debut, $ancre)
-			. $separateur;
-
+		
 	if ($premiere == 2) $premiere = 1; # '...' inutile quand on peut mettre 0
-
-	for ($i = $premiere; $i<=$derniere; $i++) {
-		$num = strval(($i-1)*$pas);
-		$texte .= pagination_item($num,
-			$num,
-			$pagination[
-				($i != $pagination['page_courante']) ?
-				'lien_pagination' : 'lien_item_courant'
-			],
-			$pagination['lien_base'], $debut, $ancre);
-		if ($i<$derniere) $texte .= $separateur;
-	}
-
-	if ($derniere < $pagination['nombre_pages'])
-		$texte .= $separateur.
-		pagination_item(strval(($pagination['nombre_pages']-1)*$pas),
-			'...',
-			$pagination[
-				($i != $pagination['page_courante']) ?
-				'lien_pagination' : 'lien_item_courant'
-			],
-			$pagination['lien_base'], $debut, $ancre);
-
-	return $bloc_ancre.$texte;
+	
+	$pagination['premiere'] = $premiere;
+	$pagination['derniere'] = $derniere;
+	
+	return recuperer_fond("modeles/pagination_$modele",$pagination);
 }
 
 // recuperere le chemin d'une css existante et :
diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index 0d59de5bd5f735d722e4da06f7c6d8d9424cb936..35741e60a2e9fd64082f001573a4747de655a453 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -593,6 +593,14 @@ function balise_PAGINATION_dist($p, $liste='true') {
 		$p->code = "''";
 		return $p;
 	}
+	$__modele = "";
+	if ($p->param && !$p->param[0][0]) {
+		$__modele = ",". calculer_liste($p->param[0][1],
+					$p->descr,
+					$p->boucles,
+					$p->id_boucle);
+	}
+	
 
 	$p->boucles[$b]->numrows = true;
 
@@ -601,7 +609,7 @@ function balise_PAGINATION_dist($p, $liste='true') {
 		\$Numrows['$b']['grand_total'] : \$Numrows['$b']['total']
 	), '$b', "
 	. $p->boucles[$b]->total_parties
-	. ", $liste)";
+	. ", $liste $__modele)";
 
 	$p->interdire_scripts = false;
 	return $p;