diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php
index e33301e5c259d1f51f9151a975a9272c387a5eb5..4589ce6ceb6e874d0bcddc1b6ac097df10ece186 100644
--- a/ecrire/inc/documents.php
+++ b/ecrire/inc/documents.php
@@ -436,11 +436,37 @@ function inserer_documents($letexte) {
 		else
 			$rempl = integre_image($match[2], $match[4], $type);
 
+		// Temporaire : un pis-aller pour eviter que des paragraphes dans
+		// le descriptif d'un document ne soient doublonnes en <br /> :
+		// le probleme est que propre() est passe deux fois...
+		$rempl = preg_replace(",\n+,", " ", $rempl);
+
+		// XHTML : remplacer par une <div onclick> le lien
+		// dans le cas [<docXX>->lien] ; sachant qu'il n'existe
+		// pas de bonne solution en XHTML pour produire un lien
+		// sur une div (!!)...
+		if (substr($rempl, 0, 5) == '<div '
+		AND preg_match(',(<a [^>]+>)'.preg_quote($match[0]).'</a>,Uims',
+		$letexte, $r)) {
+			$lien = extraire_attribut($r[1], 'href');
+			$re = '<div style="cursor:pointer;cursor:hand;" '
+				.'onclick="document.location=\''.$lien
+				.'\'"'
+##				.' href="'.$lien.'"' # href deviendra legal en XHTML2
+				.'>'
+				.$rempl
+				.'</div>';
+			$letexte = str_replace($r[0], $re, $letexte);
+		}
+
+		// cas normal
 		// Installer le document ; les <div> sont suivies de deux \n de maniere
 		// a provoquer un paragraphe a la suite ; les span, non, sinon les liens
 		// [<img|left>->URL] ne fonctionnent pas.
-		$saut = preg_match(',<div ,', $rempl) ? "\n\n" : "";
-		$letexte = str_replace($match[0], $rempl . $saut, $letexte);
+		else {
+			$saut = preg_match(',<div ,', $rempl) ? "\n\n" : "";
+			$letexte = str_replace($match[0], $rempl . $saut, $letexte);
+		}
 	}
 
 	$pile--;
diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index 7ac6c786f8b2b4b2f089ead059172370626b2531..99484243fd743aa0d3c88ac6cb24f42924e04b8d 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -1092,9 +1092,10 @@ function traiter_raccourcis($letexte) {
 		$i = 0;
 		foreach ($matches as $regs) {
 			list($lien, $class, $texte) = calculer_url($regs[3], $regs[1], 'tout');
-			$inserts[++$i] = "<a href=\"$lien\" class=\"$class\">"
-				. typo(supprimer_numero($texte))
-				. "</a>";
+			# ici ibne passer le lien pour traiter [<doc3>->url]
+			$inserts[++$i] = typo("<a href=\"$lien\" class=\"$class\">"
+				. supprimer_numero($texte)
+				. "</a>");
 
 			$letexte = str_replace($regs[0], "@@SPIP_ECHAPPE_LIEN_$i@@",
 				$letexte);
@@ -1107,26 +1108,6 @@ function traiter_raccourcis($letexte) {
 		$letexte = str_replace("@@SPIP_ECHAPPE_LIEN_$i@@", $insert, $letexte);
 	}
 
-	// XHTML : remplacer par une <div onclick> le lien
-	// dans le cas [<docXX>->lien] ; sachant qu'il n'existe
-	// pas de bonne solution en XHTML pour produire un lien
-	// sur une div (!!)...
-	if (preg_match_all(',(<a [^>]+>)(<div .*)</a>,Uims', $letexte, $regs,
-		PREG_SET_ORDER))
-	foreach ($regs as $r) {
-		if (!strlen($lien = extraire_attribut($r[1], 'href'))) next;
-		$b = $r[2];
-		if (preg_match(',^(<div [^>]*>)(<img[^>]*>)(.*)$,Uims', $b, $m))
-			$b = $m[1].$r[1].$m[2].'</a>'.$m[3];
-		$re = '<div style="cursor:pointer;cursor:hand;" '
-			.'onclick="document.location=\''.$lien
-			.'\'"'
-##			.' href="'.$lien.'"' # href deviendra legal en XHTML2
-			.'>'
-			.$b
-			.'</div>';
-		$letexte = str_replace($r[0], $re, $letexte);
-	}
 
 	//
 	// Tableaux