diff --git a/ecrire/exec/articles_tous.php b/ecrire/exec/articles_tous.php
index a106711034e66d66f0cf62b1dd3001a51669d388..bd8727c7ed2fcfb933fcbd343090a3695ac6a9e4 100644
--- a/ecrire/exec/articles_tous.php
+++ b/ecrire/exec/articles_tous.php
@@ -20,6 +20,7 @@ function exec_articles_tous_dist()
 	global $aff_art, $sel_lang, $article, $enfant, $text_article;
 	global $connect_id_auteur, $connect_statut, $spip_dir_lang, $spip_lang, $browser_layer;
 
+	changer_typo(); // pour definir $dir_lang
 	if (!is_array($aff_art)) $aff_art = array('prop','publie');
 
  	pipeline('exec_init',array('args'=>array('exec'=>'articles_tous'),'data'=>''));
@@ -95,10 +96,15 @@ debut_droite();
 if ($enfant AND $browser_layer)
 	couche_formulaire_tous($first_couche, $last_couche);
 
-afficher_rubriques_filles(0);
+ $flag_trad = (($GLOBALS['meta']['multi_rubriques'] == 'oui' 
+			OR $GLOBALS['meta']['multi_articles'] == 'oui') 
+		AND $GLOBALS['meta']['gerer_trad'] == 'oui');
 
+ 
+afficher_rubriques_filles(0, $flag_trad);
 
-fin_page();
+ 
+ fin_page();
 }
 
 // Voir inc_layer pour les 2 globales utilisees
@@ -191,7 +197,7 @@ if ($aff_statut['poubelle'])
 			    'puce-poubelle-breve.gif',
 			    _T('texte_statut_poubelle'));
 
-echo "<div align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondo' VALUE='"._T('bouton_changer')."'></div>";
+echo "\n<div align='$spip_lang_right'><INPUT TYPE='submit' CLASS='fondo' VALUE='"._T('bouton_changer')."'></div>";
 
 
 // GERER LE MULTILINGUISME
@@ -199,19 +205,19 @@ if (($GLOBALS['meta']['multi_rubriques'] == 'oui' OR $GLOBALS['meta']['multi_art
 
 	// bloc legende
 	$lf = $GLOBALS['meta']['langue_site'];
-	echo "<hr /><div class='verdana2'>";
+	echo "<hr />\n<div class='verdana2'>";
 	echo _T('info_tout_site6');
-	echo "<div><span class='lang_base'>$lf</span> ". _T('info_tout_site5') ." </div>";
-	echo "<div><span class='creer'>$lf</span> ". _T('info_tout_site2') ." </div>";
-	echo "<div><a class='claire'>$lf</a> ". _T('info_tout_site3'). " </div>";
-	echo "<div><a class='foncee'>$lf</a> ". _T('info_tout_site4'). " </div>";
+	echo "\n<div><span class='lang_base'>$lf</span> ". _T('info_tout_site5') ." </div>";
+	echo "\n<div><span class='creer'>$lf</span> ". _T('info_tout_site2') ." </div>";
+	echo "\n<div><a class='claire'>$lf</a> ". _T('info_tout_site3'). " </div>";
+	echo "\n<div><a class='foncee'>$lf</a> ". _T('info_tout_site4'). " </div>";
 	echo "</div>\n";
 
 	// bloc choix de langue
 	$langues = explode(',', $GLOBALS['meta']['langues_multilingue']);
 	if (count($langues) > 1) {
 		sort($langues);
-		echo "<br /><div class='verdana2'><b>"._T('titre_cadre_afficher_traductions')."</b><br />";
+		echo "<br />\n<div class='verdana2'><b>"._T('titre_cadre_afficher_traductions')."</b><br />";
 		echo "<select style='width:100%' NAME='sel_lang[]' size='".count($langues)."' multiple='multiple'>";
 		while (list(, $l) = each ($langues)) {
 		  echo "<option value='$l'",
@@ -222,7 +228,7 @@ if (($GLOBALS['meta']['multi_rubriques'] == 'oui' OR $GLOBALS['meta']['multi_art
 		}
 		echo "</select></div>\n";
 
-		echo "<div align='$spip_lang_right'><INPUT TYPE='submit' NAME='Changer' CLASS='fondo' VALUE='"._T('bouton_changer')."'></div>";
+		echo "\n<div align='$spip_lang_right'><INPUT TYPE='submit' NAME='Changer' CLASS='fondo' VALUE='"._T('bouton_changer')."'></div>";
 	}
 
 }
@@ -253,97 +259,89 @@ function couche_formulaire_tous($first_couche, $last_couche)
 	echo "<div>&nbsp;</div>";
 }
 
+global $spip_lang_left, $spip_lang_right, $spip_lang, $couleur_claire;
+
+define('STYLE_SECTEUR', "padding-top: 5px; padding-bottom: 5px; padding-$spip_lang_left: 28px; background: url(" . http_wrapper("secteur-24.gif") . ") $spip_lang_left center no-repeat; background-color: $couleur_claire;");
+
+define('STYLE_NONSECTEUR', "padding-top: 5px; padding-bottom: 5px; padding-$spip_lang_left: 28px; background: url(" . http_wrapper("rubrique-24.gif") . ") $spip_lang_left center no-repeat;");
+
 // http://doc.spip.org/@afficher_rubriques_filles
-function afficher_rubriques_filles($id_parent) {
+function afficher_rubriques_filles($id_parent, $flag_trad) {
 	global $enfant, $article;
-	global $spip_lang_left, $spip_lang_right, $spip_lang;
-	global $couleur_claire;
 	static $decal = 0;
 
+	if (!$enfant[$id_parent]) return;
+
 	$decal = $decal + 1;
-	$droite = 500 - (10 * $decal);
-	
-	if ($enfant[$id_parent]) {
-	  while (list($id_rubrique, $titre) = each($enfant[$id_parent]) ) {
-			
-			if ($id_parent == 0) {
-				$icone = "secteur-24.gif";
-				$bgcolor = " background-color: $couleur_claire;";
-			}
-			else {
-				$icone = "rubrique-24.gif";
-				$bgcolor = "";
-			}
-			
-			echo "<div style='padding-top: 5px; padding-bottom: 5px; padding-$spip_lang_left: 28px; background: url(" . http_wrapper($icone) . ") $spip_lang_left center no-repeat;$bgcolor'>";
-			
-			$lesarticles = isset($article[$id_rubrique]) ? $article[$id_rubrique] : '';
-			$lesenfants = isset($enfant[$id_rubrique]) ? $enfant[$id_rubrique] : '';
-			if ($lesenfants OR $lesarticles) echo bouton_block_invisible("rubrique$id_rubrique");
+
+	while (list($id_rubrique, $titre) = each($enfant[$id_parent]) ) {
 			
-			echo "<b class='verdana2'><a href='",
-			  generer_url_ecrire("naviguer","id_rubrique=$id_rubrique"),
-			  "'>",
-			  $titre,
-			  "</b></a></div>\n";
-
-			if ($lesenfants OR $lesarticles) {
-				echo debut_block_invisible("rubrique$id_rubrique");
-				echo "<div class='plan-rubrique'>";
-				if ($lesarticles) {
-					echo "<div class='plan-articles'>";
-					article_tous_rubrique($lesarticles, $id_rubrique);
-					echo "</div>";
-				}
-
-				afficher_rubriques_filles($id_rubrique);	
-				echo "</div>";
-				echo fin_block();
-			}
+		$lesarticles = isset($article[$id_rubrique]);
+		$lesenfants = ($lesarticles OR isset($enfant[$id_rubrique]));
+
+		echo "\n<div style='",
+		  ($id_parent ? STYLE_NONSECTEUR : STYLE_SECTEUR),
+		  "'>",
+		  (!$lesenfants ? '' : bouton_block_invisible("rubrique$id_rubrique")),
+		   "<b class='verdana2'><a href='",
+		   generer_url_ecrire("naviguer","id_rubrique=$id_rubrique"),
+		   "'>",
+		   $titre,
+		   "</a></b></div>\n";
+
+		if ($lesenfants) {
+			echo debut_block_invisible("rubrique$id_rubrique");
+			echo "\n<div class='plan-rubrique'>";
+			if ($lesarticles) 
+				echo article_tous_rubrique($article[$id_rubrique], $id_rubrique, $flag_trad);
+			afficher_rubriques_filles($id_rubrique,$flag_trad);
+			echo "</div>";
+			echo fin_block();
+		}
 			
-		if ($id_parent == 0) echo "<div>&nbsp;</div>";
-	  }
+		if (!$id_parent) echo "<div>&nbsp;</div>";
 	}
 	$decal = $decal-1;
-	
 }
 
 // http://doc.spip.org/@article_tous_rubrique
-function article_tous_rubrique($tous, $id_rubrique) 
+function article_tous_rubrique($tous, $id_rubrique, $flag_trad) 
 {
 	global $text_article;
 
-	$flag_trad = (($GLOBALS['meta']['multi_rubriques'] == 'oui' 
-			OR $GLOBALS['meta']['multi_articles'] == 'oui') 
-		AND $GLOBALS['meta']['gerer_trad'] == 'oui');
-
+	$res = '';
 	while(list(,$zarticle) = each($tous) ) {
 		$attarticle = &$text_article[$zarticle];
 		$zelang = $attarticle["lang"];
 		unset ($attarticle["trad"][$zelang]);
-		if ($attarticle["id_trad"] == 0 OR $attarticle["id_trad"] == $zarticle) {
+		if ($attarticle["id_trad"] == 0
+		OR $attarticle["id_trad"] == $zarticle) {
 			$auteurs = trouve_auteurs_articles($zarticle);
-			/* pas loin du but, mais mise en page horrible
-$statuts= puce_statut_article($zarticle, $attarticle['statut'], $id_rubrique);
-			*/
+
+			$res .= "\n<tr class='tr_liste'>";
 			if (count($attarticle["trad"]) > 0) {
 				ksort($attarticle["trad"]);
-				$traductions = join ($attarticle["trad"], "");
-			echo "<span class='trad_float'>", $traductions, "</span>";
+				$res .= "\n<td><span class='trad_float'>" 
+				.  join('',$attarticle["trad"])
+				.  "</span></td>";
 			}
-			echo "<a   class='",
-			  $attarticle["statut"],
-			  "' href='", 
-			  generer_url_ecrire("articles","id_article=$zarticle"),
-			  "'",
-			  ($auteurs ? (' title="' . htmlspecialchars($auteurs). '"') :''),
-			  ">",
-			  ($flag_trad ? "<span class='lang_base'>$zelang</span> " : ''),
-			  "<span>",
-			  $attarticle["titre"],
-			  "</span></a>";
+			$res .= "\n<td width='11'>"
+			  . puce_statut_article($zarticle, $attarticle["statut"], $id_rubrique)
+			  . '</td>'
+			  . "\n<td  class='plan-articles'><a"
+			  . ($auteurs ? (' title="' . htmlspecialchars($auteurs). '"') :'')
+			  . "\nhref='"
+			  . generer_url_ecrire("articles","id_article=$zarticle")
+			  . "'>"
+			  . ($flag_trad ? "<span class='lang_base'>$zelang</span> " : '')
+			  . "<span>"
+			  . $attarticle["titre"]
+			  . "</span></a>"
+			  . "</td></tr>";
 		}
 	}
+
+	return (!$res ? '' : "\n<table cellpadding='2' cellspacing='0' border='0'>$res</table>");
 }
 
 // http://doc.spip.org/@trouve_auteurs_articles
@@ -351,7 +349,7 @@ function trouve_auteurs_articles($id_article)
 {
 	$result = spip_query("SELECT nom FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien WHERE auteurs.id_auteur=lien.id_auteur AND lien.id_article=$id_article ORDER BY auteurs.nom");
 	$res = array();
-	while ($row = spip_fetch_array($result))  $res[] = $row["nom"];
+	while ($row = spip_fetch_array($result))  $res[] = extraire_multi($row["nom"]);
 	return join(", ", $res);
 }
 ?>