diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3
index 9577777681ef9df31e00bcce4d566a6bac306a42..b7b5e606ee9d4d1064e8d81983e2cc023cdf40e5 100644
--- a/ecrire/inc_filtres.php3
+++ b/ecrire/inc_filtres.php3
@@ -13,6 +13,17 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
+// Appliquer un filtre (eventuellement defini dans la matrice) aux donnees
+// et arguments
+function filtrer($filtre) {
+	if ($f = $GLOBALS['spip_matrice'][$filtre])
+		include_local($f);
+
+	$tous = func_get_args();
+	array_shift($tous); # enlever $filtre
+	return call_user_func_array($filtre, $tous);
+}
+
 // Echappement des entites HTML avec correction des entites "brutes"
 // (generees par les butineurs lorsqu'on rentre des caracteres n'appartenant
 // pas au charset de la page [iso-8859-1 par defaut])
@@ -2106,9 +2117,9 @@ function tags2dcsubject($tags) {
 }
 // fabrique un bouton de type $t de Name $n, de Value $v et autres attributs $a
 function boutonne($t, $n, $v, $a='') {
-  return "\n<input type='$t'" .
-    (!$n ? '' : " name='$n'") .
-    " value=\"$v\" $a />";
+	return "\n<input type='$t'"
+	. (!$n ? '' : " name='$n'")
+	. " value=\"$v\" $a />";
 }
 
 ?>
diff --git a/inc-compilo-index.php3 b/inc-compilo-index.php3
index c26652f146759f5206c667ef349ae980167cfad3..619e8d12e68b3d48fc1d7facb1cb22fdcc9d88c1 100644
--- a/inc-compilo-index.php3
+++ b/inc-compilo-index.php3
@@ -363,8 +363,14 @@ function compose_filtres($p, $code) {
 			$arglist = compose_filtres_args($p, $filtre,
 				($fonc == '?' ? ':' : ','));
 
-			// le filtre existe sous forme de fonction ou de methode
-			if (function_exists($fonc)
+			// le filtre est defini dans la matrice ? il faut alors l'appeler
+			// de maniere indirecte, pour charger au prealable sa definition
+			if (isset($GLOBALS['spip_matrice'][$fonc])) {
+				$code = "filtrer('$fonc',$code$arglist)";
+			}
+			// le filtre est defini sous forme de fonction ou de methode
+			// par ex. dans inc_texte, inc_filtres ou mes_fonctions
+			else if (function_exists($fonc)
 				OR (preg_match("/^(\w*)::(\w*)$/", $fonc, $regs)                            
 					AND is_callable(array($regs[1], $regs[2]))
 			))