<?xml
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>La graine de Marcimat</title>
	<link>https://marcimat.magraine.net/</link>
	<description>&#171; La graine de Marcimat &#187; est un espace regroupant le site personnel de Marcimat (pr&#233;sentant quelques &#233;crits et un bloc note de techniques pour SPIP).</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://marcimat.magraine.net/spip.php?page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>V&#339;ux 2020</title>
		<link>https://marcimat.magraine.net/Voeux-2020</link>
		<guid isPermaLink="true">https://marcimat.magraine.net/Voeux-2020</guid>
		<dc:date>2020-01-06T23:41:22Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Matthieu Marcillaud</dc:creator>



		<description>
&lt;p&gt;Je nous souhaite des petits plaisirs &lt;br class='autobr' /&gt;
et de grandes passions
&lt;br class='autobr' /&gt;
de longs et tendres c&#226;lins
&lt;br class='autobr' /&gt;
des rires &#233;carlates &#224; foison
&lt;br class='autobr' /&gt;
de raviver les bons souvenirs
&lt;br class='autobr' /&gt;
de fl&#226;ner &#231;a et l&#224; sans raison
&lt;br class='autobr' /&gt;
d'&#234;tre guillerets d&#232;s le matin
&lt;br class='autobr' /&gt;
en profitant de chaque saison &lt;br class='autobr' /&gt;
Je nous souhaite une force d&#233;mesur&#233;e &lt;br class='autobr' /&gt;
pour braver tous les soucis, &lt;br class='autobr' /&gt;
et danser pieds nus dans les jardins &lt;br class='autobr' /&gt;
accompagn&#233; de ses amis
&lt;br class='autobr' /&gt;
l'esprit tranquille, le c&#339;ur en paix
&lt;br class='autobr' /&gt;
en exprimant ses ressentis
&lt;br class='autobr' /&gt;
et de prendre un magistral soin
&lt;br class='autobr' /&gt;
et de ses (&#8230;)&lt;/p&gt;


-
&lt;a href="https://marcimat.magraine.net/-Je-voeux-" rel="directory"&gt;Je v&#339;ux.&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;div class='spip_document_374 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://marcimat.magraine.net/IMG/png/voeux_2020.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://marcimat.magraine.net/local/cache-vignettes/L500xH708/voeux_2020-d6c4c.png?1765794025' width='500' height='708' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;
Je nous souhaite des petits plaisirs &lt;br class='autobr' /&gt;
et de grandes passions&lt;br class='autobr' /&gt;
de longs et tendres c&#226;lins&lt;br class='autobr' /&gt;
des rires &#233;carlates &#224; foison&lt;br class='autobr' /&gt;
de raviver les bons souvenirs&lt;br class='autobr' /&gt;
de fl&#226;ner &#231;a et l&#224; sans raison&lt;br class='autobr' /&gt;
d'&#234;tre guillerets d&#232;s le matin&lt;br class='autobr' /&gt;
en profitant de chaque saison&lt;/p&gt;
&lt;p&gt;Je nous souhaite une force d&#233;mesur&#233;e &lt;br class='autobr' /&gt;
pour braver tous les soucis, &lt;br class='autobr' /&gt;
et danser pieds nus dans les jardins &lt;br class='autobr' /&gt;
accompagn&#233; de ses amis&lt;br class='autobr' /&gt;
l'esprit tranquille, le c&#339;ur en paix&lt;br class='autobr' /&gt;
en exprimant ses ressentis&lt;br class='autobr' /&gt;
et de prendre un magistral soin&lt;br class='autobr' /&gt;
et de ses proches et de la vie&lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>V&#339;ux 2018</title>
		<link>https://marcimat.magraine.net/Voeux-2018</link>
		<guid isPermaLink="true">https://marcimat.magraine.net/Voeux-2018</guid>
		<dc:date>2018-01-05T13:35:14Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Matthieu Marcillaud</dc:creator>



		<description>
&lt;p&gt;Je vous esp&#232;re quelques tendres moments, quelques destinations impr&#233;vues, quelques r&#234;ves &#233;bouriffants, quelques sottises farfelues, et embrasser dans chaque instant une passion m&#234;me saugrenue, de celles qu'on se livre en chantant, rien ne serait trop superflu. &lt;br class='autobr' /&gt;
Je nous esp&#232;re un avenir meilleur, une Terre choy&#233;e sans d&#233;mesure, des rires humains bravant les peurs, de l'entraide entre chaque culture, et accepter ces changements, et tous ces d&#233;fis d'envergure, ce climat fou hantera tant, rien (&#8230;)&lt;/p&gt;


-
&lt;a href="https://marcimat.magraine.net/-Je-voeux-" rel="directory"&gt;Je v&#339;ux.&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;div class='spip_document_373 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://marcimat.magraine.net/IMG/png/voeux_2018_matthieu.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://marcimat.magraine.net/local/cache-vignettes/L500xH333/voeux_2018_matthieu-686ac.png?1765794025' width='500' height='333' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;
Je vous esp&#232;re quelques tendres moments, quelques destinations impr&#233;vues, quelques r&#234;ves &#233;bouriffants, quelques sottises farfelues, et embrasser dans chaque instant une passion m&#234;me saugrenue, de celles qu'on se livre en chantant, rien ne serait trop superflu.&lt;/p&gt;
&lt;p&gt;Je nous esp&#232;re un avenir meilleur, une Terre choy&#233;e sans d&#233;mesure, des rires humains bravant les peurs, de l'entraide entre chaque culture, et accepter ces changements, et tous ces d&#233;fis d'envergure, ce climat fou hantera tant, rien de nos gestes n'est fioriture.&lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Crayon de mots pour un article</title>
		<link>https://marcimat.magraine.net/Crayon-de-mots-pour-un-article</link>
		<guid isPermaLink="true">https://marcimat.magraine.net/Crayon-de-mots-pour-un-article</guid>
		<dc:date>2014-01-21T11:15:27Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Matthieu Marcillaud</dc:creator>



		<description>
&lt;p&gt;Pour les besoins d'un projet en SPIP 3 (utilisant spipr-dist), nous voulions s&#233;lectionner les mots cl&#233;s attribu&#233;s &#224; un article depuis l'interface publique de SPIP, de fa&#231;on rapide via les crayons, et cela pour plusieurs groupes de mots cl&#233;s. &lt;br class='autobr' /&gt;
La probl&#233;matique est assez proche de l'article &#171; Un crayon listant des liaisons &#187;, mais actualis&#233; pour SPIP 3 et avec quelques subtilit&#233;s. Vous aurez tout int&#233;r&#234;t &#224; le relire si vous vous int&#233;ressez aux crayons. Nous ferons &#233;galement ici un plugin pour (&#8230;)&lt;/p&gt;


-
&lt;a href="https://marcimat.magraine.net/-Semences-SPIP-" rel="directory"&gt;Semences SPIP&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='https://marcimat.magraine.net/local/cache-vignettes/L64xH64/arton372-5f74e.png?1765787264' class='spip_logo spip_logo_right' width='64' height='64' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Pour les besoins d'un projet en SPIP 3 (utilisant &lt;a href=&#034;http://spipr.nursit.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;spipr-dist&lt;/a&gt;), nous voulions s&#233;lectionner les mots cl&#233;s attribu&#233;s &#224; un article depuis l'interface publique de SPIP, de fa&#231;on rapide via les crayons, et cela pour plusieurs groupes de mots cl&#233;s.&lt;/p&gt;
&lt;p&gt;La probl&#233;matique est assez proche de l'article &#171; &lt;a href='https://marcimat.magraine.net/Un-crayon-listant-des-liaisons' class=&#034;spip_in&#034;&gt;Un crayon listant des liaisons&lt;/a&gt; &#187;, mais actualis&#233; pour SPIP 3 et avec quelques subtilit&#233;s. Vous aurez tout int&#233;r&#234;t &#224; le relire si vous vous int&#233;ressez aux crayons. Nous ferons &#233;galement ici un plugin pour pouvoir r&#233;utiliser la chose un peu plus simplement.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-11&#034; id=&#034;nav69a8f42f557fc6.78200247&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Problematique&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Problematique&#034; class=&#034;spip_ancre&#034;&gt;Probl&#233;matique&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Creer-le-plugin&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Creer-le-plugin&#034; class=&#034;spip_ancre&#034;&gt;Cr&#233;er le plugin&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Dependance-a-Crayons&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Dependance-a-Crayons&#034; class=&#034;spip_ancre&#034;&gt;D&#233;pendance &#224; Crayons&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Dependance-a-Chosen&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Dependance-a-Chosen&#034; class=&#034;spip_ancre&#034;&gt;D&#233;pendance &#224; Chosen&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Inclusion-de-travail&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Inclusion-de-travail&#034; class=&#034;spip_ancre&#034;&gt;Inclusion de travail&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Commencer-les-crayons&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Commencer-les-crayons&#034; class=&#034;spip_ancre&#034;&gt;Commencer les crayons&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Indiquer-comment-recuperer-les-valeurs-du-champ&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Indiquer-comment-recuperer-les-valeurs-du-champ&#034; class=&#034;spip_ancre&#034;&gt;Indiquer comment r&#233;cup&#233;rer les valeurs du champ&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Le-code-HTML-du-controleur&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Le-code-HTML-du-controleur&#034; class=&#034;spip_ancre&#034;&gt;Le code HTML du contr&#244;leur&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Les-traitements-a-enregistrer&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Les-traitements-a-enregistrer&#034; class=&#034;spip_ancre&#034;&gt;Les traitements &#224; enregistrer&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Le-code-HTML-de-la-vue-affichage-des-nouvelles-valeurs&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Le-code-HTML-de-la-vue-affichage-des-nouvelles-valeurs&#034; class=&#034;spip_ancre&#034;&gt;Le code HTML de la vue (affichage des nouvelles valeurs)&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Bonus-pour-le-centre-de-page&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Bonus-pour-le-centre-de-page&#034; class=&#034;spip_ancre&#034;&gt;Bonus pour le centre de page&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;h2 class=&#034;spip&#034; id='Problematique'&gt; Probl&#233;matique &lt;a class='sommaire-back sommaire-back-11' href='#s-Problematique' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Comme indiqu&#233;, nous devons pouvoir &#233;diter ici des liaisons entre les mots cl&#233;s d'un certain groupe et un article. Ce n'est pas, donc, la fonction premi&#232;re des crayons qui permettent, sans rien faire d'autre, d'&#233;diter un champ d'une ligne d'une table connue.&lt;/p&gt;
&lt;p&gt;Ici, il nous faut &#233;diter des liaisons entre une ligne d'une table connue (un article dans notre cas) et une autre table (des mots d'un certain groupe), ce qui concr&#232;tement revient &#224; remplir ou modifier la table SQL &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_mots_liens&lt;/code&gt;. Pour cela, nous cr&#233;erons des fonctions et squelettes sp&#233;cifiques pour g&#233;rer notre crayon.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Creer-le-plugin'&gt; Cr&#233;er le plugin &lt;a class='sommaire-back sommaire-back-11' href='#s-Creer-le-plugin' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Un plugin tr&#232;s sommaire peut &#234;tre cr&#233;&#233; pour commencer. Ce n'est &#233;videmment pas obligatoire car ce que nous construisons pourrait &#234;tre mis en partie dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;config/mes_options.php&lt;/code&gt; et en partie dans le r&#233;pertoire &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;squelettes&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Pour ce faire, le plus rapide est de cr&#233;er avec la &lt;a href=&#034;http://contrib.spip.net/4134&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Fabrique&lt;/a&gt; un plugin minimal, ayant un fichier d'option.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Dependance-a-Crayons'&gt; D&#233;pendance &#224; Crayons &lt;a class='sommaire-back sommaire-back-11' href='#s-Dependance-a-Crayons' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pour fonctionner, nous aurons besoin de la version 1.17 minimum de crayons, qui permet ce dont nous aurons besoin sans afficher de notices PHP&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Voir la r&#233;vision r80169&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;On ajoute donc dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;paquet.xml&lt;/code&gt; la d&#233;pendance :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;necessite nom=&#034;crayons&#034; compatibilite=&#034;[1.17.0;]&#034; /&gt;&lt;/textarea&gt;&lt;h2 class=&#034;spip&#034; id='Dependance-a-Chosen'&gt; D&#233;pendance &#224; Chosen &lt;a class='sommaire-back sommaire-back-11' href='#s-Dependance-a-Chosen' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;On ajoute ensuite une d&#233;pendance au plugin &lt;a href=&#034;http://plugins.spip.net/chosen.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Chosen&lt;/a&gt; qui permettra d'am&#233;liorer l'interface de s&#233;lection des mots cl&#233;s dans notre crayon. Cette d&#233;pendance n'est pas r&#233;ellement obligatoire, le crayon fonctionnerait sans.&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;necessite nom=&#034;chosen&#034; compatibilite=&#034;[1.0.5;]&#034; /&gt;&lt;/textarea&gt;
&lt;p&gt;Une fois le plugin chosen actif, il faut le configurer pour indiquer qu'il doit s'activer dans l'espace public, et sur les &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;select.chosen&lt;/code&gt; :&lt;/p&gt;
&lt;div class='spip_document_341 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;34&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://marcimat.magraine.net/local/cache-vignettes/L500xH276/config_chosen-ab07f.png?1765794025' width='500' height='276' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-341 '&gt;&lt;strong&gt;Configuration possible de Chosen
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Il ne reste plus qu'&#224; cr&#233;er les fichiers et fonctions de travail.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Inclusion-de-travail'&gt; Inclusion de travail &lt;a class='sommaire-back sommaire-back-11' href='#s-Inclusion-de-travail' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Dans un premier temps, nous cr&#233;ons une inclusion &#8211; qu'il suffira de charger dans une colonne de navigation par exemple &#8211; qui affichera les mots cl&#233;s des groupes de mots que nous aurons choisis pour un article donn&#233;.&lt;/p&gt;
&lt;p&gt;L'inclusion est appel&#233; ici &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;inclure/selection_mots_article_colonne.html&lt;/code&gt; et comporte le simple code suivant, qui liste les mots d'un article et groupe donn&#233; :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='15' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;BOUCLE_groupe(GROUPES_MOTS){id_groupe}&gt; &lt;div class=&#034;liste mots groupe#ID_GROUPE&#034;&gt; &lt;h2 class=&#034;h2&#034;&gt;#TITRE&lt;/h2&gt; &lt;ul class=&#034;liste-items&#034;&gt; &lt;BOUCLE_mots(MOTS) {id_groupe} {id_article} {par num titre, titre}&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href=&#034;#URL_MOT&#034; rel=&#034;tag&#034;&gt;#TITRE&lt;/a&gt;&lt;/li&gt; &lt;/BOUCLE_mots&gt; &lt;li class=&#034;item&#034;&gt;&lt;:crayonsmots:aucun_mot_present:&gt;&lt;/li&gt; &lt;//B_mots&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/BOUCLE_groupe&gt;&lt;/textarea&gt;
&lt;p&gt;Pour tester, nous surchargeons un fichier de spipr-dist (extra/article.html) dans notre dossier squelettes, et ajoutons, dans la boucle article l'inclusion avec les groupes de mots cl&#233;s d&#233;sir&#233;s, par exemple avec ce code :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='9' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;BOUCLE_extra2_article(ARTICLES){id_article}&gt; &lt;INCLURE{fond=inclure/selection_mots_article_colonne, id_article, id_groupe=1} /&gt; &lt;INCLURE{fond=inclure/selection_mots_article_colonne, id_article, id_groupe=2} /&gt; &lt;INCLURE{fond=inclure/selection_mots_article_colonne, id_article, id_groupe=3} /&gt; [...] &lt;/BOUCLE_extra2_article&gt;&lt;/textarea&gt;
&lt;p&gt;&#192; partir de maintenant, en allant sur un article dans l'espace public, nous pouvons voir, en colonne les groupes de mots choisis (ici d'identifiant 1, 2 et 3), et les mots qui y sont associ&#233;s (ou non).&lt;/p&gt;
&lt;div class='spip_document_342 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;108&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://marcimat.magraine.net/local/cache-vignettes/L327xH417/colonne_des_mots-62aa6.png?1765794025' width='327' height='417' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-342 '&gt;&lt;strong&gt;Exemple de colonne avec les mots
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-342 '&gt;Sur ce site de test, les titre des mots cl&#233;s n'ont pas beaucoup de sens !
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;h2 class=&#034;spip&#034; id='Commencer-les-crayons'&gt; Commencer les crayons &lt;a class='sommaire-back sommaire-back-11' href='#s-Commencer-les-crayons' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Nous ajoutons alors de quoi afficher un crayon sur notre s&#233;lection en modifiant l'inclusion. Nous ajoutons la balise &lt;code class='spip spip_code spip_code_inline' dir='ltr'&gt;#EDIT&lt;/code&gt; sur la ligne :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;div class=&#034;liste mots groupe#ID_GROUPE&#034;&gt;&lt;/textarea&gt;
&lt;p&gt;Qui devient :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;div class=&#034;liste mots groupe#ID_GROUPE #EDIT{mots_article-#ID_ARTICLE}&#034;&gt;&lt;/textarea&gt;
&lt;p&gt;Il faut noter la subtilit&#233; ici avec &lt;code class='spip spip_code spip_code_inline' dir='ltr'&gt;#EDIT{mots_article-#ID_ARTICLE}&lt;/code&gt; : habituellement, on ne passe aucun identifiant &#224; ce genre de balise, &lt;code class='spip spip_code spip_code_inline' dir='ltr'&gt;#EDIT&lt;/code&gt; retrouvant l'objet et l'identifiant de la boucle parente. Cependant ici nous avons dans la boucle parente le groupe et son identifiant, mais ce n'est pas suffisant pour conna&#238;tre l'article de la liaison. On transmet donc &#8211; en fourbant &#8211; cet identifiant d'article, que l'on pourra ensuite r&#233;cup&#233;rer dans les fonctions sp&#233;cifiques du crayon.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Indiquer-comment-recuperer-les-valeurs-du-champ'&gt; Indiquer comment r&#233;cup&#233;rer les valeurs du champ &lt;a class='sommaire-back sommaire-back-11' href='#s-Indiquer-comment-recuperer-les-valeurs-du-champ' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pour calculer la signature du champ, calcul&#233; &#224; partir des donn&#233;es pr&#233;sentes dans celui-ci &#8211; ici une liste de mots cl&#233;s &#8212;, il nous faut cr&#233;er une fonction sp&#233;cifique. On l'ajoute dans le fichier d'&lt;strong&gt;options&lt;/strong&gt; du plugin :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='3' class='spip_cadre spip_cadre_block' dir='ltr'&gt;function valeur_champ_mots_article($table, $ids, $champ) { return valeur_champ_mots_objet($table, $ids, $champ); }&lt;/textarea&gt;
&lt;p&gt;En pr&#233;vision de proposer d'autres objets (pourquoi pas les mots li&#233;s &#224; des auteurs), notre fonction sp&#233;cifique appelle une fonction plus g&#233;n&#233;rique :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='16' class='spip_cadre spip_cadre_block' dir='ltr'&gt;function valeur_champ_mots_objet($table, $ids, $champ) { list($id_objet, $id_groupe) = explode('-', $ids); list(, $objet) = explode('_', $champ); $valeurs = sql_allfetsel(&#034;m.id_mot&#034;, &#034;spip_mots AS m, spip_mots_liens AS ml&#034;, array( &#034;m.id_groupe=&#034; . sql_quote($id_groupe), &#034;m.id_mot = ml.id_mot&#034;, &#034;ml.id_objet=&#034;.sql_quote($id_objet), &#034;ml.objet=&#034;.sql_quote($objet) )); $valeurs = array_map('array_shift', $valeurs); return $valeurs; }&lt;/textarea&gt;
&lt;p&gt;Il y a des subtilit&#233;s ici.&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; d'une part le champ &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$ids&lt;/code&gt; contient du texte, tel que &#171; 348-2 &#187; o&#249; le premier nombre est l'identifiant de l'article, le second du groupe. On s&#233;pare en 2 pour r&#233;cup&#233;rer ces 2 nombres.&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Cela vient du fait que nous avons ajout&#233; l'identifiant de l'article &#224; la (&#8230;)&#034; id=&#034;nh2&#034;&gt;2&lt;/a&gt;]&lt;/span&gt;&lt;/li&gt;&lt;li&gt; d'autre part on r&#233;cup&#232;re le type d'objet dans le nom du contr&#244;leur, sous entendant que nos contr&#244;leurs s'appellent &#171; mots_T &#187; o&#249; T est le type d'objet, tel qu'ici &#171; mots_article &#187;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ces astuces permettent d'avoir un code assez g&#233;n&#233;rique et r&#233;utilisable.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Le-code-HTML-du-controleur'&gt; Le code HTML du contr&#244;leur &lt;a class='sommaire-back sommaire-back-11' href='#s-Le-code-HTML-du-controleur' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Le contr&#244;leur affiche le formulaire de saisie. Son code, plac&#233; dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;controleurs/mots_article.html&lt;/code&gt; de notre plugin est le suivant :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='33' class='spip_cadre spip_cadre_block' dir='ltr'&gt;#CACHE{0} #SET{ids,#ENV{id_groupes_mot}|explode{-}} #SET{id_groupe,#GET{ids/1}} #SET{id_article,#GET{ids/0}} #SET{name,#ENV{name_#ENV{crayon_modele}}} &lt;BOUCLE_groupe(GROUPES_MOTS){id_groupe=#GET{id_groupe}}&gt; #SET{mots,#ARRAY} &lt;BOUCLE_mots_actifs(MOTS){id_groupe}{id_article=#GET{id_article}}&gt; #SET{mots,#GET{mots}|push{#ID_MOT}} &lt;/BOUCLE_mots_actifs&gt; &lt;ul&gt; &lt;li&gt; &lt;label for=&#034;#GET{name}&#034;&gt;#TITRE&lt;/label&gt; &lt;select name='#GET{name}\[\]' class='crayon-active chosen' multiple='multiple' id=&#034;#GET{name}&#034; style=&#034;width:[(#ENV{largeur}|moins{40})]px&#034;&gt; &lt;BOUCLE_mots(MOTS){id_groupe}{par num titre, titre}&gt; &lt;option value=&#034;#ID_MOT&#034; [(#ID_MOT|in_array{#GET{mots}}|oui) selected=&#034;selected&#034;]&gt; #TITRE &lt;/option&gt; &lt;/BOUCLE_mots&gt; &lt;/select&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/BOUCLE_groupe&gt;&lt;/textarea&gt;
&lt;p&gt;De la m&#234;me fa&#231;on que dans le code PHP pr&#233;c&#233;dent, on doit retrouver l'identifiant de l'article et l'identifiant du groupe transmis, en utilisant le filtre &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;explode&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Le reste est un formulaire pour crayons assez standard. Il faut faire attention &#224; bien r&#233;cup&#233;rer le &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;name&lt;/code&gt; attendu pour ce champ, indiquer que c'est un champ multiple. Nous for&#231;ons aussi une largeur sur le s&#233;lecteur pour qu'il prenne &#224; peu pr&#232;s toute la largeur disponible.&lt;/p&gt;
&lt;p&gt;En cliquant le crayon, nous avons maintenant son contr&#244;leur (le formulaire) qui s'affiche.&lt;/p&gt;
&lt;div class='spip_document_343 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;188&#034; data-legende-lenx=&#034;xxx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://marcimat.magraine.net/local/cache-vignettes/L321xH241/controleur_actif_sur_un_groupe-21a68.png?1765794025' width='321' height='241' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-343 '&gt;&lt;strong&gt;Contr&#244;leur ouvert
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-343 '&gt;Le crayon a &#233;t&#233; cliqu&#233; et affiche les mots cl&#233;s actifs. En cliquant la zone blanche, la liste des mots cl&#233;s possibles s'ouvre, permettant d'en s&#233;lectionner de nouveaux.
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;h2 class=&#034;spip&#034; id='Les-traitements-a-enregistrer'&gt; Les traitements &#224; enregistrer &lt;a class='sommaire-back sommaire-back-11' href='#s-Les-traitements-a-enregistrer' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Les traitements se passent dans la fonction de r&#233;vision. De m&#234;me que pour les valeurs du champ, on passe par une fonction plus g&#233;n&#233;rique et par l'API d'&#233;dition de liens de SPIP 3. Cela peut s'&#233;crire ainsi :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='37' class='spip_cadre spip_cadre_block' dir='ltr'&gt;function mots_article_revision($ids, $colonnes, $type_objet) { return mots_objet_revision($ids, $colonnes, $type_objet, 'mots_article'); } function mots_objet_revision($ids, $colonnes, $type_objet, $champ = '') { if (!$champ) return false; list($id_objet, $id_groupe) = explode('-', $ids); list(, $type_liaison) = explode('_', $champ); // actuellement en bdd $old = valeur_champ_mots_objet($type_objet, $ids, $champ); // ceux qu'on veut maintenant $new = explode(',', $colonnes[$champ]); // les mots &#224; supprimer $del = array_diff($old, $new); // les mots &#224; ajouter $add = array_diff($new, $old); include_spip('action/editer_liens'); if ($del) { objet_dissocier(array('mot'=&gt;$del), array($type_liaison =&gt; $id_objet)); } if ($add) { objet_associer(array('mot'=&gt;$add), array($type_liaison =&gt; $id_objet)); } return true; }&lt;/textarea&gt;&lt;h2 class=&#034;spip&#034; id='Le-code-HTML-de-la-vue-affichage-des-nouvelles-valeurs'&gt; Le code HTML de la vue (affichage des nouvelles valeurs) &lt;a class='sommaire-back sommaire-back-11' href='#s-Le-code-HTML-de-la-vue-affichage-des-nouvelles-valeurs' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;La vue est tr&#232;s simple et reprend en grande partie, dans le fichier &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vues/mots_article.html&lt;/code&gt;, notre premi&#232;re inclusion :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='20' class='spip_cadre spip_cadre_block' dir='ltr'&gt;#SET{ids,#ENV{id_groupes_mot}|explode{-}} #SET{id_groupe,#GET{ids/1}} #SET{id_article,#GET{ids/0}} &lt;BOUCLE_groupe(GROUPES_MOTS){id_groupe=#GET{id_groupe}}&gt; &lt;div class=&#034;liste mots groupe#ID_GROUPE&#034;&gt; &lt;h2 class=&#034;h2&#034;&gt;#TITRE&lt;/h2&gt; &lt;ul class=&#034;liste-items&#034;&gt; &lt;BOUCLE_mots(MOTS) {id_groupe} {id_article=#GET{id_article}} {par num titre, titre}&gt; &lt;li class=&#034;item&#034;&gt;&lt;a href=&#034;#URL_MOT&#034; rel=&#034;tag&#034;&gt;#TITRE&lt;/a&gt;&lt;/li&gt; &lt;/BOUCLE_mots&gt; &lt;li class=&#034;item&#034;&gt;&lt;:crayonsmots:aucun_mot_present:&gt;&lt;/li&gt; &lt;//B_mots&gt; &lt;/ul&gt; &lt;/div&gt; &lt;/BOUCLE_groupe&gt;&lt;/textarea&gt;
&lt;p&gt;&#192; ce stade, le crayon est enti&#232;rement fonctionnel.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Bonus-pour-le-centre-de-page'&gt; Bonus pour le centre de page &lt;a class='sommaire-back sommaire-back-11' href='#s-Bonus-pour-le-centre-de-page' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Nous avions surtout besoin de pouvoir &#233;diter quelques groupes de mots dans la partie centrale de la page. Il y a dans le plugin un autre crayon &#171; tags_article &#187; et une autre inclusion &#171; selection_mots_article_grille &#187; qui peut afficher plusieurs groupes de mots sur la grille 12 colonnes de bootstrap, par exemple avec :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='7' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;h2&gt;Tous les groupes&lt;/h2&gt; &lt;INCLURE{fond=inclure/selection_mots_article_grille, id_article, colonnes=4} /&gt; &lt;h2&gt;Autre s&#233;lection pr&#233;cise&lt;/h2&gt; &lt;INCLURE{fond=inclure/selection_mots_article_grille, id_article, groupes=#LISTE{2,3}, colonnes=6} /&gt;&lt;/textarea&gt;
&lt;p&gt;Ce qui donne cet affichage :&lt;/p&gt;
&lt;div class='spip_document_344 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;116&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://marcimat.magraine.net/IMG/png/mots_au_centre_de_la_page.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://marcimat.magraine.net/local/cache-vignettes/L500xH156/mots_au_centre_de_la_page-67080.png?1765794025' width='500' height='156' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-344 '&gt;&lt;strong&gt;Mots au centre de la page
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-344 '&gt;Pr&#233;sentation l&#233;g&#232;rement diff&#233;rente, d'o&#249; un nouvelle vue et un autre nom pour le crayon.
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;&lt;a href=&#034;http://zone.spip.org/trac/spip-zone/changeset/80169&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Voir la r&#233;vision r80169&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb2&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2&#034; class=&#034;spip_note&#034; title=&#034;Notes 2&#034; rev=&#034;appendix&#034;&gt;2&lt;/a&gt;] &lt;/span&gt;Cela vient du fait que nous avons ajout&#233; l'identifiant de l'article &#224; la balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#EDIT&lt;/code&gt; (la fameuse fourberie). Cette balise cr&#233;e une classe CSS avec le nom de la table (groupes_mots), le texte transmis &#224; la balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#EDIT&lt;/code&gt; (mots_article-248), pr&#233;c&#233;d&#233; et suivi par un signe &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;-&lt;/code&gt; puis suivi de l'identifiant de la table (le id_groupe), soit au total la classe CSS &#171; groupes_mot-mots_article-348-2 &#187; dans notre exemple.&lt;/p&gt;
&lt;p&gt;Crayons attend 3 donn&#233;es s&#233;par&#233;es par des &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;-&lt;/code&gt; : la table, le champ, l'identifiant. Tout signe &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;-&lt;/code&gt; suppl&#233;mentaire est mis dans l'identifiant, consid&#233;rant que c'est une donn&#233;e particuli&#232;re. Nativement dans crayons ces nommages complexes &#8211; qui ajoutent des moins en plus ! &#8211; servent pour crayonner les champs des tables ayant des cl&#233;s primaires compos&#233;es, tel que les tables de liens. Ils ont &#233;t&#233; introduits &lt;a href=&#034;http://zone.spip.org/trac/spip-zone/changeset/46818&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;en r&#233;vision r46818&lt;/a&gt;. Ici nous en d&#233;tournons l'usage.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		</content:encoded>


		
		<enclosure url="https://marcimat.magraine.net/IMG/zip/crayonsmots-2.zip" length="17373" type="application/zip" />
		

	</item>
<item xml:lang="fr">
		<title>Un crayon listant des liaisons</title>
		<link>https://marcimat.magraine.net/Un-crayon-listant-des-liaisons</link>
		<guid isPermaLink="true">https://marcimat.magraine.net/Un-crayon-listant-des-liaisons</guid>
		<dc:date>2012-11-14T18:25:33Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Matthieu Marcillaud</dc:creator>



		<description>
&lt;p&gt;Les crayons, c'est facile d'utilisation, surtout quand on veut modifier des &#233;l&#233;ments de la table en cours de lecture. Mais lorsqu'il s'agit d'&#233;l&#233;ments li&#233;s, comme des mots cl&#233;s sur des auteurs, le parcours est plus d&#233;licat ! &lt;br class='autobr' /&gt;
Cet article pr&#233;sente une solution pour obtenir cela. Le code m&#233;riterait d'&#234;tre am&#233;lior&#233;, mais il pr&#233;sente une base de travail pour ceux qui aimeraient copier :) &lt;br class='autobr' /&gt; Tout d'abord, pr&#233;cisons que cet exemple concerne SPIP 2.1. Certaines parties m&#233;riteraient d'&#234;tre (&#8230;)&lt;/p&gt;


-
&lt;a href="https://marcimat.magraine.net/-Semences-SPIP-" rel="directory"&gt;Semences SPIP&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Les crayons, c'est facile d'utilisation, surtout quand on veut modifier des &#233;l&#233;ments de la table en cours de lecture. Mais lorsqu'il s'agit d'&#233;l&#233;ments li&#233;s, comme des mots cl&#233;s sur des auteurs, le parcours est plus d&#233;licat !&lt;/p&gt;
&lt;p&gt;Cet article pr&#233;sente une solution pour obtenir cela. Le code m&#233;riterait d'&#234;tre am&#233;lior&#233;, mais il pr&#233;sente une base de travail pour ceux qui aimeraient copier :)&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-3&#034; id=&#034;nav69a8fee09224d2.95145711&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Le-controleur-et-sa-saisie&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Le-controleur-et-sa-saisie&#034; class=&#034;spip_ancre&#034;&gt;Le contr&#244;leur et sa saisie&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-La-vue&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#La-vue&#034; class=&#034;spip_ancre&#034;&gt;La vue&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Preparation-et-enregistrement-des-donnees&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Preparation-et-enregistrement-des-donnees&#034; class=&#034;spip_ancre&#034;&gt;Pr&#233;paration et enregistrement des donn&#233;es&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;p&gt;Tout d'abord, pr&#233;cisons que cet exemple concerne SPIP 2.1. Certaines parties m&#233;riteraient d'&#234;tre r&#233;adapt&#233;es pour SPIP 3 (mais devraient aussi fonctionner).&lt;/p&gt;
&lt;p&gt;Nous avions besoin d'un listing d'auteurs o&#249; il serait facile de choisir des mots d'un groupe de mots donn&#233; (le num&#233;ro 40) avec un crayon. Dans notre cas le nombre de mots du groupe est limit&#233; (environ 10 mots) ce qui permet une interface assez simple : on liste tous les mots du groupe dans un s&#233;lecteur multiple.&lt;/p&gt;
&lt;p&gt;Nous avons une liste d'auteurs (les lignes), et la colonne montr&#233;e indique les mots cl&#233;s attach&#233;s (des m&#233;tiers) aux auteurs. C'est eux que l'on veut &#233;diter avec un crayon.&lt;/p&gt;
&lt;div class='spip_document_338 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;40&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://marcimat.magraine.net/local/cache-vignettes/L257xH240/sc3a9lection4ef6-2a678.png?1765794025' width='257' height='240' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-338 '&gt;&lt;strong&gt;Liste d'auteurs avec les mots associ&#233;s
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Commen&#231;ons par montrer le code permettant d'amener l'icone de crayon sur la liste :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='6' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;td class=&#034;categorie #EDIT{ctags}&#034;&gt; &lt;BOUCLE_cat(MOTS){id_auteur}{id_groupe=40}{', '}&gt;[(#TITRE|supprimer_numero)]&lt;/BOUCLE_cat&gt; --- &lt;//B_cat&gt;
&lt;/td&gt;&lt;/textarea&gt;
&lt;p&gt;Nous sommes &#224; l'int&#233;rieur d'une boucle auteur (non pr&#233;sent&#233;e ici) et notre colonne est affich&#233;e gr&#226;ce &#224; une boucle sur les mots de m&#234;me auteur, du groupe 40. Sur la balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;td&lt;/code&gt; du tableau, nous appelons le crayons nomm&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ctags&lt;/code&gt; avec &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#EDIT{ctags}&lt;/code&gt;, comme n'importe quel crayon habituel, sauf qu'ici, la colonne &#171; ctags &#187; n'existe pas dans notre table auteurs.&lt;/p&gt;
&lt;p&gt;Il va falloir indiquer &#224; crayons :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; comment obtenir les donn&#233;es du formulaire &#224; afficher, via une fonction PHP&lt;/li&gt;&lt;li&gt; quel formulaire afficher, via un contr&#244;leur et une saisie&lt;/li&gt;&lt;li&gt; comment enregistrer les donn&#233;es saisies, via une fonction PHP&lt;/li&gt;&lt;li&gt; comment r&#233;afficher le r&#233;sultat, via une vue&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Le plugin crayons sait g&#233;rer des formulaires traitant plusieurs types de champs d'un coup ; par exemple le crayon &#171; introduction &#187; affiche 3 champs : description, chapeau et texte (de m&#233;moire) et g&#232;re leur enregistrement. Il utilise pour &#231;a 1 contr&#244;leur, qui obtient les donn&#233;es des 3 champs et affiche les 3 champs de formulaire.&lt;/p&gt;
&lt;p&gt;Nous, nous avons besoin d'1 contr&#244;leur, pour obtenir 1 champ de formulaire, mais les donn&#233;es du champ sont obtenues et enregistr&#233;es en plusieurs endroits ensuite. Le fait d'avoir 1 seul champ nous dispense de devoir cr&#233;er un contr&#244;leur PHP en plus du HTML, qui serait indispensable pour d&#233;clarer les champs utilis&#233;s dans le contr&#244;leur sinon. Ici, Crayons comprend que le champ souhait&#233; porte le m&#234;me nom que le contr&#244;leur.&lt;/p&gt;
&lt;p&gt;Commen&#231;ons par le plus simple.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Le-controleur-et-sa-saisie'&gt;Le contr&#244;leur et sa saisie&lt;a class='sommaire-back sommaire-back-3' href='#s-Le-controleur-et-sa-saisie' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Il affiche le formulaire et porte le nom indiqu&#233; dans la balise &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;#EDIT&lt;/code&gt;, soit ici &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;controleurs/ctags.html&lt;/code&gt;. Il contient :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='12' class='spip_cadre spip_cadre_block' dir='ltr'&gt;#CACHE{0} #SET{mots,#ARRAY}
&lt;BOUCLE_mots_actifs(MOTS){id_groupe=40}{id_auteur}&gt;
#SET_PUSH{mots,#ID_MOT}
&lt;/BOUCLE_mots_actifs&gt; &lt;ul&gt;
[(#SAISIE{ctags, content_#ENV{key}_ctags, id_groupe=40, class=crayons-active, valeur=#GET{mots}, label=&lt;:utilisateurs:label_categorie:&gt;})]
&lt;/ul&gt;&lt;/textarea&gt;
&lt;p&gt;La premi&#232;re partie s'amuse &#224; retrouver les mots d&#233;j&#224; associ&#233;s &#224; l'auteur et les stocke dans une variable &#171; mots &#187; qui est pass&#233;e, ensuite comme valeur de la saisie &#171; ctags &#187;. Cette saisie va lister les mots du groupe 40 et s&#233;lectionner ceux qui sont d&#233;j&#224; associ&#233;s &#224; l'auteur.&lt;/p&gt;
&lt;p&gt;Il est important de noter que la saisie cr&#233;e un attribut &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;name&lt;/code&gt; de nom : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;content_X_ctags&lt;/code&gt; o&#249; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;X&lt;/code&gt; est un identifiant attribu&#233; par crayons.&lt;/p&gt;
&lt;p&gt;La saisie &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;saisies/ctags.html&lt;/code&gt; est simple (enfin c'est relatif, mais c'est juste un copi&#233; coll&#233; adapt&#233; d'une autre saisie) :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='27' class='spip_cadre spip_cadre_block' dir='ltr'&gt;[(#REM) defaut peut &#234;tre une chaine (plusieurs valeurs ou pas) qu'on sait d&#233;composer ]
#SET{defaut, #ENV{defaut}|saisies_chaine2tableau} [(#REM) valeur peut &#234;tre une chaine (plusieurs valeurs ou pas) qu'on sait d&#233;composer ]
#SET{valeur, #ENV{valeur}|saisies_valeur2tableau} &lt;select name=&#034;#ENV{nom}[]&#034; multiple=&#034;multiple&#034; class=&#034;#GET{type}[ (#ENV{class})]&#034; size=&#034;#ENV{size,15}&#034; id=&#034;champ_[(#ENV{nom}|saisie_nom2classe)]&#034;[ value=&#034;(#ENV{valeur_forcee,#ENV{valeur}})&#034;][ disabled=&#034;(#ENV{disable})&#034;][ (#ENV*{attributs})]&gt;
[(#ENV{cacher_option_intro}|non) &lt;option value=&#034;&#034;&gt;[(#ENV{option_intro})]&lt;/option&gt;]
&lt;BOUCLE_mots(MOTS){par id_groupe, num titre, titre}{id_groupe ?}&gt; [&lt;optgroup label=&#034;(#TYPE|unique|attribut_html)&#034; /&gt;] &lt;option value=&#034;#ID_MOT&#034; [(#ID_MOT|in_array{#ENV{valeur_forcee,#GET{valeur,#GET{defaut}}}}|oui) selected=&#034;selected&#034;]&gt;[(#TITRE|supprimer_numero)]&lt;/option&gt;
&lt;/BOUCLE_mots&gt;
&lt;/select&gt;&lt;/textarea&gt;
&lt;p&gt;En gros, c'est une saisie affichant une s&#233;lection multiple, bouclant sur les mots du groupe de mot demand&#233;.&lt;/p&gt;
&lt;p&gt;Ajoutons un rien de CSS pour enlever le label de notre saisie (sinon le crayons est 2 fois plus large) :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;.crayon-html .saisie_ctags label {display:none;}
.crayon-html .saisie_ctags {padding-left:10px;}&lt;/textarea&gt;
&lt;p&gt;D&#233;j&#224;, nous arrivons maintenant &#224; un formulaire lorsqu'on &#233;dite ressemblant &#224; cela :&lt;/p&gt;
&lt;div class='spip_document_339 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;15&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://marcimat.magraine.net/local/cache-vignettes/L250xH320/sc3a9lectionb7e0-55183.png?1765794025' width='250' height='320' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-339 '&gt;&lt;strong&gt;Crayon ouvert
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Faisons la vue.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='La-vue'&gt;La vue&lt;a class='sommaire-back sommaire-back-3' href='#s-La-vue' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;La vue d'un crayon, c'est ce qui s'affiche apr&#232;s avoir modifi&#233; un &#233;l&#233;ment. Il y a des vues par d&#233;faut, mais on peut les personnaliser. Nous, nous souhaitons le m&#234;me affichage que dans notre tableau &#224; l'origine. Il nous suffit de recoller le m&#234;me code dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;vues/ctags.html&lt;/code&gt; :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='5' class='spip_cadre spip_cadre_block' dir='ltr'&gt;#CACHE{0}
&lt;BOUCLE_cat(MOTS){id_auteur}{id_groupe=40}{', '}&gt;[(#TITRE|supprimer_numero)]&lt;/BOUCLE_cat&gt;
---
&lt;//B_cat&gt;&lt;/textarea&gt;
&lt;p&gt;Simple et efficace :)&lt;/p&gt;
&lt;p&gt;Voyons maintenant comment faire pour que crayons enregistre les donn&#233;es !&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Preparation-et-enregistrement-des-donnees'&gt;Pr&#233;paration et enregistrement des donn&#233;es&lt;a class='sommaire-back sommaire-back-3' href='#s-Preparation-et-enregistrement-des-donnees' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Crayons, pour savoir si une donn&#233;e a &#233;t&#233; modifi&#233;e par la personne qui valide le formulaire fait envoyer par le formulaire une signature des donn&#233;es qu'il avait calcul&#233; au moment de l'affichage dudit formulaire. Chaque champ poss&#232;de 2 signatures : une signature identifiant le champ (le &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;key&lt;/code&gt; de tout &#224; l'heure), une autre identifiant le contenu des donn&#233;es (un md5 de celles-ci).&lt;/p&gt;
&lt;p&gt;Comme SPIP dans l'espace priv&#233;, Crayons n'acceptera de modifier une donn&#233;e que si sa signature envoy&#233;e par le formulaire est la m&#234;me que celle actuellement en base. Le cas contraire indique que quelqu'un d'autre a modifi&#233; les donn&#233;es entre temps. Si les signatures correspondent, il regarde si les donn&#233;es envoy&#233;es sont diff&#233;rentes &#233;galement (sinon pas la peine d'enregistrer la m&#234;me chose). Si tel est le cas l'enregistrement se fait, pour uniquement les donn&#233;es modifi&#233;es.&lt;/p&gt;
&lt;p&gt;Le corollaire est que Crayons doit conna&#238;tre les donn&#233;es en cr&#233;ant le formulaire ! Comme notre champ n'est pas standard, il va falloir lui indiquer comment l'obtenir.&lt;/p&gt;
&lt;p&gt;C'est ce que fait la fonction suivante (&#224; placer, par exemple dans un fichier d'option - il y a certainement mieux, mais je n'ai pas regard&#233; plus en d&#233;tail encore) :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='10' class='spip_cadre spip_cadre_block' dir='ltr'&gt;// obtenir la liste des identifiants de mots cl&#233;s li&#233;s &#224; notre objet...
function valeur_champ_ctags($table, $id, $champ) { $valeurs = sql_allfetsel(&#034;m.id_mot&#034;, &#034;spip_mots AS m, spip_mots_${table}s AS ma&#034;, array(&#034;m.id_groupe=40&#034;, &#034;m.id_mot = ma.id_mot&#034;, &#034;ma.id_${table}=&#034;.sql_quote($id))); $valeurs = array_map('array_shift', $valeurs); return $valeurs;
}&lt;/textarea&gt;
&lt;p&gt;La fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;valeur_champ_X&lt;/code&gt; o&#249; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;X&lt;/code&gt; est le nom du champ souhait&#233; (c'est aussi personnalisable en fonction du nom de la table) re&#231;oit 3 arguments : le type de table (ici auteur), son identifiant (le num&#233;ro d'auteur), et le nom du champ d&#233;sir&#233; (le &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;X&lt;/code&gt;, soit &#171; ctags &#187; ici).&lt;/p&gt;
&lt;p&gt;La fonction doit retourner la valeur du champ. Ici, on retourne un tableau de tous les identifiants de mots cl&#233;s associ&#233; &#224; l'objet et son identifiant. Une fonction d'API sp&#233;cifique en SPIP 3 pourrait obtenir ces donn&#233;es (cf &lt;a href=&#034;http://www.spip.net/fr_article5477.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;API &#233;diter liens&lt;/a&gt;), mais j'&#233;tais en SPIP 2.1.&lt;/p&gt;
&lt;p&gt;Ceci fait, il faut maintenant indiquer le traitement &#224; r&#233;aliser pour notre contr&#244;leur, puisque ce n'est pas un traitement automatique. Cela se passe avec la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;X_revision&lt;/code&gt; o&#249; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;X&lt;/code&gt; est le nom du contr&#244;leur.&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='35' class='spip_cadre spip_cadre_block' dir='ltr'&gt;// la r&#233;vision du crayon ctags doit supprimer ou ajouter des liaisons de mots cl&#233;s
function ctags_revision($id_objet, $colonnes, $type_objet){ // actuellement en bdd $old = valeur_champ_ctags($type_objet, $id_objet, 'ctags'); // ceux qu'on veut maintenant $new = explode(',', $colonnes['ctags']); // les mots &#224; supprimer $del = array_diff($old, $new); // les mots &#224; ajouter $add = array_diff($new, $old); // actions ! if ($del) { sql_delete(&#034;spip_mots_${type_objet}s&#034;, array(sql_in(&#034;id_mot&#034;, $del), &#034;id_$type_objet=$id_objet&#034;)); } if ($add) { $adds = array(); foreach ($add as $a) { $adds[] = array( &#034;id_$type_objet&#034; =&gt; $id_objet, &#034;id_mot&#034; =&gt; $a, ); } sql_insertq_multi(&#034;spip_mots_${type_objet}s&#034;, $adds); } return true;
}&lt;/textarea&gt;
&lt;p&gt;Ici la fonction re&#231;oit 3 arguments : l'identifiant de l'objet, les couples de donn&#233;es &#224; enregistrer, le type d'objet. Ici, SPIP 3 simplifierait aussi le code avec son API d'&#233;dition de liens.&lt;/p&gt;
&lt;p&gt;Le principe est simple : on r&#233;cup&#232;re ce qu'on veut enregistrer dans la cl&#233; 'ctags' de la variable &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$colonne&lt;/code&gt;. Elle contient la liste des identifiants de mots pour notre auteur. On fait ensuite la diff&#233;rence entre ce qui est d&#233;j&#224; stock&#233; et les nouvelles donn&#233;es pour savoir ce qu'on doit enlever et ajouter en BDD.&lt;/p&gt;
&lt;p&gt;Voil&#224; :)&lt;/p&gt;
&lt;p&gt;Bon, tout n'est pas tr&#232;s propre, mais c'est une belle base !&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Esp&#233;ranto, genre et sexisme</title>
		<link>https://marcimat.magraine.net/Esperanto-genre-et-sexisme</link>
		<guid isPermaLink="true">https://marcimat.magraine.net/Esperanto-genre-et-sexisme</guid>
		<dc:date>2012-08-29T14:15:39Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Matthieu Marcillaud</dc:creator>



		<description>
&lt;p&gt;Un des points les plus g&#233;nants actuellement j'ai l'impression pour l'esperanto (enfin c'est moins pire que le fran&#231;ais) est sa non distinction pour certains mots entre le neutre (enfin d'un sexe ind&#233;termin&#233;) et le masculin, alors que passer un mot au f&#233;minin se fait par l'usage d'un suffixe. Du coup, beaucoup de personnes s'interrogent sur comment rendre cette langue non-sexiste. Il y a beaucoup de propositions, mais pas encore de choix &#233;tabli. &lt;br class='autobr' /&gt; Le fran&#231;ais (la langue) est dit (&#8230;)&lt;/p&gt;


-
&lt;a href="https://marcimat.magraine.net/-Esperanto-" rel="directory"&gt;Esperanto&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Un des points les plus g&#233;nants actuellement j'ai l'impression pour l'esperanto (enfin c'est moins pire que le fran&#231;ais) est sa non distinction pour certains mots entre le neutre (enfin d'un sexe ind&#233;termin&#233;) et le masculin, alors que passer un mot au f&#233;minin se fait par l'usage d'un suffixe. Du coup, beaucoup de personnes s'interrogent sur comment rendre cette langue non-sexiste. Il y a beaucoup de propositions, mais pas encore de choix &#233;tabli.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-3&#034; id=&#034;nav69a9036fb7e9b7.02568683&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Pour-le-masculin-et-neutre-des-noms&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Pour-le-masculin-et-neutre-des-noms&#034; class=&#034;spip_ancre&#034;&gt;Pour le masculin et neutre des noms&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Pour-les-pronoms&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Pour-les-pronoms&#034; class=&#034;spip_ancre&#034;&gt;Pour les pronoms&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-En-resume&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#En-resume&#034; class=&#034;spip_ancre&#034;&gt;En r&#233;sum&#233;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;p&gt;Le fran&#231;ais (la langue) est dit discriminant, par exemple lorsqu'il accorde un adjectif au masculin pluriel d&#232;s qu'il y a un &#233;l&#233;ment masculin dans un groupe comme &#171; L'homme et les 99 femmes sont beaux &#187;. Une proposition de r&#233;forme du fran&#231;ais est d'accorder avec le nom le plus proche. C'est la &lt;a href=&#034;http://fr.wikipedia.org/wiki/R%C3%A8gle_de_proximit%C3%A9&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;r&#232;gle de proximit&#233;&lt;/a&gt; (et c'&#233;tait comme &#231;a il y a quelques si&#232;cles en ancien fran&#231;ais). Ce qui donnerait &#171; L'homme et les 99 femmes sont belles &#187; ou &#171; Les 99 femmes et l'homme sont beaux &#187; selon le nom le plus proche de l'adjectif.&lt;/p&gt;
&lt;p&gt;En esp&#233;ranto les noms en eux-m&#234;mes sont non-genr&#233;s (ni masculin, ni f&#233;minin) et il n'y a pas d'accord &#224; faire de ce type. &#171; La table blanche et le piano blanc &#187; peut se traduire par &#171; La tablo blanka kaj la piano blanka &#187;. Par contre ils peuvent se r&#233;f&#233;rer &#224; quelqu'un (ou un animal) qui est lui sexu&#233;, mais &#231;a ne change pas les accords. &#171; Nigra katino ronronas &#187; signifie &#171; Une chatte noire ronronne &#187;&lt;/p&gt;
&lt;p&gt;En esperanto, il y a des probl&#232;mes qui ne portent pas sur l'accord de l'adjectif (qui ne marque que le pluriel et non le f&#233;minin), mais sur la question du sexe attribu&#233; &#224; un nom ou un pronom d&#233;signant une personne.&lt;/p&gt;
&lt;p&gt;Prenons un nom simple : &#171; la knabo &#187;, qui signifie le gar&#231;on. En ajoutant le sufixe -in- on obtient le f&#233;minin : &#171; la knabino &#187; signifie la fille. C'est l&#224; que &#231;a devient emb&#234;tant : par le fait qu'il y ait un suffixe pour d&#233;signer le sexe f&#233;minin, on s'attend &#224; l'existence d'un suffixe pour d&#233;signer le sexe masculin, mais il n'en est rien. On peut s'attendre aussi &#224; l'existance d'un neutre, o&#249; le sexe est ind&#233;termin&#233; (j'ai l'impression que &#231;a se nomme &lt;a href=&#034;http://fr.wikipedia.org/wiki/%C3%89pic%C3%A8ne&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&#233;pic&#232;ne&lt;/a&gt; dans ce cas l&#224;).&lt;/p&gt;
&lt;p&gt;De la m&#234;me mani&#232;re les pronoms personnels de la 3&#232; personne sont :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; li : il (masculin ou ind&#233;termin&#233;)&lt;/li&gt;&lt;li&gt; &#349;i : elle (f&#233;minin)&lt;/li&gt;&lt;li&gt; &#285;i : il neutre pour un objet/animal tel que &#171; la hundo... &#285;i estas... &#187; (Le chien... il est...)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;On voit aussit&#244;t que &#171; li &#187; est employ&#233; pour d&#233;signer ce qui est masculin ou ind&#233;termin&#233;. L&#224; encore &#231;a pose le probl&#232;me d'une sorte de pr&#233;dominance du masculin. Dans &#171; La kuracisto eniras. Li estas granda. &#187; (Le m&#233;decin entra. Il est grand). On ne sait normalement pas le sexe du m&#233;decin. Pourtant, &#171; li &#187; indique, ou incite &#224; penser que c'est un homme (c'est le m&#234;me probl&#232;me en fran&#231;ais d'ailleurs).&lt;/p&gt;
&lt;p&gt;Pour ces raisons de nombreuses propositions d'esp&#233;rantistes visent &#224; trouver des solutions &#224; ces 2 probl&#232;mes. Aucune n'a encore &#233;t&#233; valid&#233;e et c'est peut &#234;tre &#231;a le plus emb&#234;tant : chaque solution risque de vivre sa propre vie, m&#233;lang&#233;e aux autres simplement parce qu'une n'a pas &#233;t&#233; retenue et valid&#233;e.&lt;/p&gt;
&lt;p&gt;Voyons un peu les propositions faites.&lt;/p&gt;
&lt;p&gt;Des explications compl&#232;tes &lt;a href=&#034;http://en.wikipedia.org/wiki/Gender_reform_in_Esperanto&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;sont disponibles en anglais l&#224;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Pour-le-masculin-et-neutre-des-noms'&gt; Pour le masculin et neutre des noms &lt;a class='sommaire-back sommaire-back-3' href='#s-Pour-le-masculin-et-neutre-des-noms' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Il faut savoir qu'il existe d&#233;j&#224; un pr&#233;fixe (vir-) pour d&#233;signer le &#171; m&#226;le &#187; chez les animaux, par exemple &#171; virbovo &#187; pour taureau. Le pr&#233;fixe vir- et le suffixe -in- comme la plupart en esp&#233;ranto peuvent &#234;tre utilis&#233;s seuls : viro = de sexe masculin, ino = de sexe f&#233;minin. On voit d&#233;j&#224; encore un autre probl&#232;me : parfois il y a vir- pour sp&#233;cifier le masculin, d&#232;s fois pas (on ne dit pas &#171; virpatro &#187; ou &#171; virkuracisto &#187; pour dire le p&#232;re ou le m&#233;decin homme). Et ce n'est pas sym&#233;trique, il y a un suffixe et un pr&#233;fixe.&lt;/p&gt;
&lt;p&gt;Il semble qu'il y ait un certain consensus pour proposer un suffixe en plus indiquant le sexe masculin, et &#224; rendre non sexu&#233; les mots qui le sont par d&#233;faut tel que &#171; patro &#187; (p&#232;re), &#171; knabo &#187; (gar&#231;on).&lt;/p&gt;
&lt;p&gt;Les suffixes propos&#233;s sont -un-, -ol- et -i&#265;-, et c'est ce dernier le plus utilis&#233; actuellement &#224; cette fin. De la sorte, avec cette modification introduisant -i&#265;- comme suffixe de masculin, on obtiendrait :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; patro : un parent (p&#232;re ou m&#232;re)&lt;/li&gt;&lt;li&gt; patrino : m&#232;re&lt;/li&gt;&lt;li&gt; patri&#265;o : p&#232;re&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;En fait, -i&#265;- est employ&#233; parce qu'il se rapproche du suffixe d&#233;j&#224; existant exprimant une relation tendre -&#265;j- (comme il y a -nj- pour le f&#233;minin) :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; patrino : m&#232;re. panjo : maman&lt;/li&gt;&lt;li&gt; patro : p&#232;re. pa&#265;jo : papa&lt;/li&gt;&lt;/ul&gt;&lt;h2 class=&#034;spip&#034; id='Pour-les-pronoms'&gt; Pour les pronoms &lt;a class='sommaire-back sommaire-back-3' href='#s-Pour-les-pronoms' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Le cas des pronoms semble poser beaucoup plus de difficult&#233;s. Certains veulent compl&#234;tement enlever le genre, par exemple en indiquant que &#171; li &#187; peut signifier soit masculin, soit f&#233;minin et en supprimant &#349;i. D'autres pr&#233;f&#232;rent ajouter un autre pronom soit pour d&#233;signer le sexe ind&#233;fini (li devenant alors masculin), soit pour d&#233;signer le masculin (li devenant alors de sexe ind&#233;fini).&lt;/p&gt;
&lt;p&gt;Il n'est pas facile de faire le tri de toutes les propositions. Je retiens que &#171; ri &#187; ne va pas en tant que pronom &#224; cause de la confusion avec tous les verbes commen&#231;ant par &#171; ri &#187; tel que &#171; rigardi &#187;&lt;/p&gt;
&lt;p&gt;Apr&#232;s, j'aime bien la proposition de dire que &#171; &#285;i &#187; d&#233;signe, en plus du neutre et d'un animal, quelqu'un de sexe ind&#233;termin&#233;. &#171; &#349;li &#187;, contraction de &#171; &#349;i a&#365; li &#187; (elle ou il) est aussi int&#233;ressant mais plus difficile &#224; prononcer (chli). Il y a aussi &#171; gi &#187; qui ferait tout autant l'affaire. Pas simple.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='En-resume'&gt; En r&#233;sum&#233; &lt;a class='sommaire-back sommaire-back-3' href='#s-En-resume' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Disons que lorsque je saurais l'&#233;crire et le parler correctement, j'utiliserais vraissemblablement les formes suivantes :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;strong&gt;-i&#265;-&lt;/strong&gt; pour les noms d&#233;signant des individus masculins. &#171; patro &#187; devenant un parent dont on ne pr&#233;cise pas le sexe, soit parce qu'on ne le connait pas, n'est pas important, ne veut pas le dire ou parce qu'il est d&#233;j&#224; connu dans la phrase,&lt;/li&gt;&lt;li&gt; &lt;strong&gt;gi&lt;/strong&gt; comme pronom indiquant une personne dont, de la m&#234;me mani&#232;re, on ne connait pas le sexe (ou ce n'est pas important, ou on veut pas le dire...)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&#199;a donnerait. Avant :&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;
La patrino salutas min. &#348;i ridetas.&lt;br class='autobr' /&gt;
La patro iras hejmen. Li piediras.&lt;br class='autobr' /&gt;
Iu krias mian nomon. Li estas forega.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Apr&#232;s :&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;
La patrino salutas min. &#348;i ridetas.&lt;br class='autobr' /&gt;
La patri&#265;o iras hejmen. Li piediras.&lt;br class='autobr' /&gt;
Iu krias mian nomon. Gi estas forega.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ce qui peut se traduire par :&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;
La m&#232;re me salue. Elle sourit.&lt;br class='autobr' /&gt;
Le p&#232;re se dirige chez lui. Il est &#224; pied.&lt;br class='autobr' /&gt;
Quelqu'un crie mon nom. Il est tr&#232;s loin.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Peut &#234;tre que d'ici l&#224; une petite r&#233;forme de l'esperanto aura eu lieu :)&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Ressources pour l'apprentissage de l'esp&#233;ranto</title>
		<link>https://marcimat.magraine.net/Ressources-pour-l-apprentissage-de</link>
		<guid isPermaLink="true">https://marcimat.magraine.net/Ressources-pour-l-apprentissage-de</guid>
		<dc:date>2012-08-29T14:13:20Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Matthieu Marcillaud</dc:creator>



		<description>
&lt;p&gt;Parce que m&#234;me s'il est plus facile que d'autres langues, l'esp&#233;ranto n&#233;cessite un apprentissage ! Et c'est relativement int&#233;ressant d'avoir quelques cours sous la main ! &lt;br class='autobr' /&gt; Commen&#231;ons d&#233;j&#224; par pr&#233;senter une boutique o&#249; il est possible d'acheter de nombreuses revues, manuels, livres d'esp&#233;ranto, par correspondance ou directement &#224; Paris : chez Esperanto-france. &lt;br class='autobr' /&gt;
En g&#233;n&#233;ral, d&#233;couvrir l'esp&#233;ranto passe par le site Lernu. Dedans il y a de quoi apprendre tout de l'esp&#233;ranto ainsi que des (&#8230;)&lt;/p&gt;


-
&lt;a href="https://marcimat.magraine.net/-Esperanto-" rel="directory"&gt;Esperanto&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Parce que m&#234;me s'il est plus facile que d'autres langues, l'esp&#233;ranto n&#233;cessite un apprentissage ! Et c'est relativement int&#233;ressant d'avoir quelques cours sous la main !&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Commen&#231;ons d&#233;j&#224; par pr&#233;senter une boutique o&#249; il est possible d'acheter de nombreuses revues, manuels, livres d'esp&#233;ranto, par correspondance ou directement &#224; Paris : chez &lt;a href=&#034;http://esperanto-france.org/boutique&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Esperanto-france&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En g&#233;n&#233;ral, d&#233;couvrir l'esp&#233;ranto passe par le site &lt;a href=&#034;http://fr.lernu.net/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Lernu&lt;/a&gt;. Dedans il y a de quoi apprendre tout de l'esp&#233;ranto ainsi que des exercices &#224; faire. L'interface n'est pas toujours des plus agr&#233;ables &#224; regarder mais le site est tr&#232;s pratique, notamment avec le formulaire de recherche dans le dictionnaire pr&#233;sent dans la colonne qui permet &#224; tout moment de nous rem&#233;morer les mots oubli&#233;s.&lt;/p&gt;
&lt;p&gt;Il y a une &lt;a href=&#034;http://esperanto-midipyrenees.org/dossiers/dossier.php?val=7_esperanto+magazino+emission+radio&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;tr&#232;s bonne &#233;mission de radio &#224; Toulouse&lt;/a&gt; qui donne des cours d'Esp&#233;ranto. J'avais toutes leurs archives, mais ils ont (malheureusement pour nous) refait leur site et seules &lt;a href=&#034;http://www.esperanto-midipyrenees.org/download/cat.php?val=43_emissions+radio&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;les nouvelles archives depuis la refonte sont disponibles l&#224;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le site &lt;a href=&#034;http://tatoeba.org/fre/home&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Tatoeba&lt;/a&gt; permet de trouver des phrases traduites dans diff&#233;rentes langues. La diversit&#233; des phrases permet de d&#233;couvrir pas mal de vocabulaire.&lt;/p&gt;
&lt;p&gt;Il est possible d'&#233;couter de la musique chez &lt;a href=&#034;http://muzaiko.info/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Muzaiko&lt;/a&gt; et plus g&#233;n&#233;ralement des documents sonores en esp&#233;ranto sur &lt;a href=&#034;http://esperanto-radio.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Esperanto Radio&lt;/a&gt; et de la m&#234;me mani&#232;re des vid&#233;os en esperanto sur &lt;a href=&#034;http://esperanto-tv.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Esperanto TV&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Certains cours se retrouvent en vid&#233;o, par exemple avec cette pi&#232;ce de th&#233;&#226;tre expliqu&#233;e &#171; &lt;a href=&#034;http://www.youtube.com/watch?v=sVyut5BV3kE&amp;feature=relmfu&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;La Passporto al la tuta mondo&lt;/a&gt; &#187; (16 parties je crois, 4 * 2h).&lt;/p&gt;
&lt;p&gt;On trouve &#233;galement quelques jolis contes sous forme de courts m&#233;trages d'animation, traduits et sous-titr&#233;s &lt;a href=&#034;http://www.bookbox.com/catalog&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;sur le site Bookbox&lt;/a&gt; destin&#233; &#224; l'apprentissage des langues. Il faut choisir &#171; esperanto &#187; dans le s&#233;lecteur.&lt;/p&gt;
&lt;p&gt;Le site &lt;a href=&#034;http://facila.org/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Facila vento&lt;/a&gt; propose des textes simples pour d&#233;buter l'esperanto, que l'on peut &#233;galement &#233;couter.&lt;/p&gt;
&lt;p&gt;Enfin difficile de passer au travers des outils de Google : &lt;a href=&#034;https://www.google.com/intl/eo/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;la recherche en esp&#233;ranto&lt;/a&gt;, et &lt;a href=&#034;http://translate.google.fr/#fr/eo/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;les traductions&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Voil&#224; d&#233;j&#224; de quoi occuper la d&#233;couverte de l'esp&#233;ranto !&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>R&#233;flexions sur l'esp&#233;ranto</title>
		<link>https://marcimat.magraine.net/Reflexions-sur-l-esperanto</link>
		<guid isPermaLink="true">https://marcimat.magraine.net/Reflexions-sur-l-esperanto</guid>
		<dc:date>2012-08-29T14:10:13Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Matthieu Marcillaud</dc:creator>



		<description>
&lt;p&gt;Cela fait quelques ann&#233;es d&#233;j&#224; que je m'int&#233;resse de pr&#232;s ou de loin &#224; l'esp&#233;ranto. Force est de constater que je n'ai pas encore pouss&#233; mon &#233;tude assez loin pour savoir suffisamment le parler. Cependant, aussi &#233;trange que cela puisse me para&#238;tre, je comprends d&#233;j&#224; mieux des textes d'esp&#233;ranto que d'anglais. Je croise pourtant l'anglais presque tous les jours de part mon activit&#233; et je l'ai normalement appris &#224; l'&#233;cole. De ce regard l&#224;, il y a comme un myst&#232;re qui &#233;mane de l'esp&#233;ranto et de (&#8230;)&lt;/p&gt;


-
&lt;a href="https://marcimat.magraine.net/-Esperanto-" rel="directory"&gt;Esperanto&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Cela fait quelques ann&#233;es d&#233;j&#224; que je m'int&#233;resse de pr&#232;s ou de loin &#224; l'esp&#233;ranto. Force est de constater que je n'ai pas encore pouss&#233; mon &#233;tude assez loin pour savoir suffisamment le parler. Cependant, aussi &#233;trange que cela puisse me para&#238;tre, je comprends d&#233;j&#224; mieux des textes d'esp&#233;ranto que d'anglais. Je croise pourtant l'anglais presque tous les jours de part mon activit&#233; et je l'ai normalement appris &#224; l'&#233;cole. De ce regard l&#224;, il y a comme un myst&#232;re qui &#233;mane de l'esp&#233;ranto et de sa facilit&#233;. Qu'est-ce qui me motive dans l'esp&#233;ranto ? est-ce viable de l'apprendre ? peut elle r&#233;ellement devenir une langue pont, une langue de travail, auxiliaire, de compr&#233;hension entre les cultures sur une plus grande population ? sa facilit&#233; peut elle survivre aux &#233;volutions de toutes langues vivantes ? Je vais plus ou moins faire mon bilan de ces diff&#233;rentes questions que me parcourent l'&#233;chine ces jours-ci.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-4&#034; id=&#034;nav69a9036fc224e2.64368464&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Motivations&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Motivations&#034; class=&#034;spip_ancre&#034;&gt;Motivations&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Esperanto-le-choix-dans-les-langues-construites&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Esperanto-le-choix-dans-les-langues-construites&#034; class=&#034;spip_ancre&#034;&gt;Esp&#233;ranto, le choix dans les langues construites&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-L-esperanto-comme-langue-vivante&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#L-esperanto-comme-langue-vivante&#034; class=&#034;spip_ancre&#034;&gt;L'esperanto comme langue vivante&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-La-presence-de-l-esperanto&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#La-presence-de-l-esperanto&#034; class=&#034;spip_ancre&#034;&gt;La pr&#233;sence de l'esperanto&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;h2 class=&#034;spip&#034; id='Motivations'&gt; Motivations &lt;a class='sommaire-back sommaire-back-4' href='#s-Motivations' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;J'ai pr&#233;cis&#233;ment des difficult&#233;s &#224; observer clairement quelles sont mes motivations envers l'esp&#233;ranto. Plus clairement, je suis certain que son d&#233;veloppement pourrait faciliter beaucoup l'&#233;change de connaissances entre personnes de langues diff&#233;rentes, avec un minimum d'effort d'apprentissage des diff&#233;rentes parties. En tout cas un apprentissage bien plus rapide que l'anglais (150 heures d'esp&#233;ranto apportent l'&#233;quivalent de 2000 heures de cours d'anglais) pour une efficacit&#233; bien meilleure : la prononciation, compr&#233;hension phon&#233;tique, r&#233;gularit&#233; de l'esp&#233;ranto apportent des bases solides, fiables sur la connaissance de la langue l&#224; o&#249; avec l'anglais, m&#234;me avec beaucoup de pratique, il restera toujours difficile d'&#233;crire une phrase correcte, de prononcer des mots correctement et inversement de comprendre le bon mot lorsqu'il est prononc&#233;, tellement les subtilit&#233;s phon&#233;tiques de cette langue sont grandes.&lt;/p&gt;
&lt;p&gt;Le souci est que, actuellement, ce n'est pas encore l'esp&#233;ranto qui est utilis&#233; pour travailler entre les personnes d'horizons diff&#233;rents. S'ils n'ont pas une langue commune, c'est l'anglais qui est pris. C'est particuli&#232;rement vrai dans une des activit&#233;s pour lesquelles je suis impliqu&#233; : le d&#233;veloppement d'un logiciel (&lt;a href=&#034;http://www.spip.net/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;SPIP&lt;/a&gt;). Dans ce cadre l&#224;, notre logiciel - enfin son code source - est d&#233;velopp&#233;, &#233;crit, exprim&#233; en fran&#231;ais (son interface d'utilisation et son usage est traduit, mais pas le code source ou ses gabarits). Nombreuses sont les remarques nous disant &#224; peu pr&#232;s, le plus naturellement du monde : &#171; Il y aurait bien plus de monde sur votre projet si vous passiez &#224; l'anglais &#187;. C'est peut &#234;tre vrai, mais dans ce cas, pourquoi juste l'anglais, ou pourquoi l'anglais uniquement ?&lt;/p&gt;
&lt;p&gt;L'anglais est devenu tellement la routine que de nombreux projets ne se donnent m&#234;me plus la peine de se faire traduire. Ils restent en anglais, peut &#234;tre supposant que tout le monde comprend ou doit comprendre cette langue. C'est le cas de la plate-forme de travail collaboratif &#171; &lt;a href=&#034;https://github.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;GitHub&lt;/a&gt; &#187; permettant &#224; des d&#233;veloppeurs de logiciels de travailler ensemble.&lt;/p&gt;
&lt;p&gt;Cette pr&#233;sence extr&#234;mement grande de l'anglais comme langue de travail en informatique fait que j'arrive maintenant &#224; comprendre &#224; peu pr&#232;s le sens d'&#233;crits techniques dans cette langue, au prix de beaucoup de fatigue psychique. Mais mon probl&#232;me reste entier d&#232;s que je veux m'exprimer dans cette langue. J'ai l'impression syst&#233;matique que je vais faire des erreurs et que je ne vais pas &#234;tre compris. C'est d'autant plus frustrant que je n'ai rien contre le fait de savoir l'anglais et que j'aimerais bien pouvoir m'exprimer facilement dans cette langue, mais le constat est l&#224; : c'est difficile.&lt;/p&gt;
&lt;p&gt;Je me suis souvent dit que je devais &#234;tre un incomp&#233;tent en langues &#233;trang&#232;res, surtout en anglais, mais je me dis maintenant que &#231;a ne vient peut &#234;tre pas que de moi ! Particuli&#232;rement le visionnage des 10 pr&#233;sentations &#171; &lt;a href=&#034;http://www.youtube.com/watch?v=taLXSe4c498&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Les langues : un d&#233;fi&lt;/a&gt; &#187; de Claude Piron apporte un &#233;clairage diff&#233;rent. Malgr&#233; pour certains des &#233;tudes pouss&#233;es en anglais, des erreurs d'interpr&#233;tations, de mauvaises compr&#233;hension des mots sont pr&#233;sentes. En clair, &#231;a dit que l'anglais est mal adapt&#233; comme langue de travail internationale.&lt;/p&gt;
&lt;p&gt;Et donc l'esp&#233;ranto est une solution tr&#232;s plaisante, &#224; partir du moment o&#249; suffisamment de personne s'y mettent ! C'est bien l&#224; un probl&#232;me. Certes il y a des locuteurs, assez nombreux en esp&#233;ranto, mais on les trouve lorsqu'on veut voyager ou apprendre l'esp&#233;ranto. Rarement dans la vie de tous les jours dans le cadre d'une de ses activit&#233;s ou en se promenant sur internet. Et c'est l&#224; une baisse de motivation.&lt;/p&gt;
&lt;p&gt;Lorsque j'ai appris &#224; frapper au clavier avec la disposition de clavier &lt;a href=&#034;http://bepo.fr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;b&#233;po&lt;/a&gt;, &#224; rouler en v&#233;lo couch&#233; ou fait des buttes de culture, la satisfaction de ces alternatives est imm&#233;diate : un grand confort d'utilisation et des am&#233;liorations aussit&#244;t visibles, pratiques.&lt;/p&gt;
&lt;p&gt;C'est un peu diff&#233;rent pour l'esp&#233;ranto car c'est un changement qui implique d'autres personnes : il ne peut devenir utile quotidiennement que si suffisamment de gens s'y mettent afin que l'anglais ne soit plus consid&#233;r&#233;e comme la langue naturelle de travail international, et que les ressources soient traduites !&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Esperanto-le-choix-dans-les-langues-construites'&gt; Esp&#233;ranto, le choix dans les langues construites &lt;a class='sommaire-back sommaire-back-4' href='#s-Esperanto-le-choix-dans-les-langues-construites' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;La question peut aussi se poser du choix de l'esp&#233;ranto en lui-m&#234;me alors qu'il existe de nombreuses autres langues r&#233;guli&#232;res et &lt;a href=&#034;http://fr.wikipedia.org/wiki/Langues_construites&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;langues construites&lt;/a&gt;, souvent plus compliqu&#233;es, mais parfois extr&#234;mement plus simple comme le r&#233;cent &lt;a href=&#034;http://fr.wikipedia.org/wiki/Toki_pona&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Toki pona&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il n'est pas &#233;vident de r&#233;pondre &#224; une telle question. On peut dire que l'esp&#233;ranto a fait ses preuves car il est r&#233;ellement une langue vivante auxiliaire pour une frange de la population mondiale et ce depuis plus d'un si&#232;cle.&lt;/p&gt;
&lt;p&gt;On peut dire que le choix de l'esp&#233;ranto plut&#244;t qu'une langue appartenant &#224; un peuple comme langue de travail internationale permet une &#233;galit&#233; linguistique : chaque peuple est oblig&#233; de l'apprendre et n'a pas, d&#232;s lors, l'avantage de sa langue natale.&lt;/p&gt;
&lt;p&gt;Mais qu'adviendrait-il, si l'esp&#233;ranto &#233;tait choisie comme langue auxiliaire internationale, et que plus tard, suite par exemple &#224; une guerre entre 2 &#233;tats, ces peuples choisissent l'esp&#233;ranto comme langue nationale. Cet argument de la non-langue natale n'aurait plus de sens, et l'esp&#233;ranto ne serait plus alors une langue &#171; auxiliaire &#187; pour eux. C'est emb&#234;tant car ce n'est pas le but que s'est fix&#233; l'esp&#233;ranto : servir de langue pivot, auxiliaire, de travail, mais absolument pas remplacer des langues natales.&lt;/p&gt;
&lt;p&gt;Disons peut-&#234;tre deux choses en sa faveur :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; pour le moment c'est commun&#233;ment la langue auxiliaire la plus accept&#233;e et parl&#233;e&lt;/li&gt;&lt;li&gt; apprendre l'esp&#233;ranto facilite l'apprentissage d'autres langues ensuite. En fait c'est le cas de tout apprentissage de langue &#233;trang&#232;re mais, comme le dit wikipedia :
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;Lorsque l'on a d&#233;j&#224; appris une langue &#233;trang&#232;re, l'apprentissage d'une nouvelle langue &#233;trang&#232;re est plus facile, &lt;strong&gt;d'o&#249; l'int&#233;r&#234;t de commencer par une langue &#233;trang&#232;re facile&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Disons aussi que beaucoup de langues construites sont des tentatives de diff&#233;rents linguistes (le plus souvent) de cr&#233;er ou tendre vers une langue &#171; parfaite &#187;. L&#224; encore ce n'&#233;tait pas l'objectif de l'Esperanto qui dit dans son &lt;i&gt;fundamunto&lt;/i&gt; vouloir &#171; rester intangible avec ses imperfections &#187;. Cela dit, toute langue &#233;volue.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='L-esperanto-comme-langue-vivante'&gt; L'esperanto comme langue vivante &lt;a class='sommaire-back sommaire-back-4' href='#s-L-esperanto-comme-langue-vivante' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;De nombreux linguiste le soulignent : toute langue vivante &#233;volue avec le temps, souvent r&#233;gionalement. Est-ce que ce serait pareil pour l'esp&#233;ranto ? C'est encore une question fort int&#233;ressante.&lt;/p&gt;
&lt;p&gt;On peut certainement s&#233;parer en 2 les &#233;volutions : d'une part le vocabulaire, et d'autre part la construction de la langue. Le risque avec le vocabulaire est l'entr&#233;e de mots issus du pays o&#249; le groupe esp&#233;rantiste se trouve. Par exemple l'introduction de mots fran&#231;ais chez les esp&#233;rantistes parlant fran&#231;ais. Si chacun fait cela &#224; sa sauce il risque rapidement d'y avoir soit cacophonie, soit de nouveau h&#233;g&#233;monie d'une culture sur une autre. Toujours est-il qu'au bout d'un si&#232;cle d'esp&#233;ranto je n'ai pas l'impression que de nouveaux mots l'ont entach&#233;, d'autant plus que sa nature m&#234;me de langue agglutinante permet bien plus de constructions, comme des briques, que notre fran&#231;ais ou anglais.&lt;/p&gt;
&lt;p&gt;L'autre partie est sur la construction m&#234;me de la langue. Une langue &#233;volue avec la soci&#233;t&#233; et si elle reste fig&#233;e il risque d'y avoir un d&#233;calage entre les envies de la soci&#233;t&#233; et les possibilit&#233;s de la langue. C'est peut &#234;tre le point le plus difficile &#224; g&#233;rer. Effectivement les motivations politiques ne sont pas forc&#233;ment les m&#234;mes d'une r&#233;gion &#224; une autre et l&#224; o&#249; certains veulent du changement, il n'est pas certain que d'autres le veuillent aussi. Il y a d&#233;j&#224; une &#233;volution soci&#233;tale forte qui pointe son nez depuis quelques temps en esp&#233;ranto : l'envie d'avoir une langue &#171; non-sexiste &#187; (j'y reviendrais &lt;a href='https://marcimat.magraine.net/Esperanto-genre-et-sexisme' class=&#034;spip_in&#034;&gt;dans un prochain article&lt;/a&gt;). Chacun y va de sa solution et si une des propositions n'est pas accept&#233;e par la f&#233;d&#233;ration d'esp&#233;ranto, elle risque n&#233;anmoins d'&#234;tre utilis&#233;e, de fait par les locuteurs !&lt;/p&gt;
&lt;p&gt;Mais m&#234;me si ces changements auront lieu, ils n'entameront pas la volont&#233; initiale de l'esp&#233;ranto qui est d'&#234;tre une langue facile, accessible au plus grand nombre, permettant de dialoguer entre diff&#233;rentes autres langues. Puis m&#234;me si la langue &#233;volue, on aura au moins fait mieux, l'espace de quelques ann&#233;es, que toutes les tentatives pr&#233;c&#233;dentes sugg&#233;rant une langue internationale compliqu&#233;e.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='La-presence-de-l-esperanto'&gt; La pr&#233;sence de l'esperanto &lt;a class='sommaire-back sommaire-back-4' href='#s-La-presence-de-l-esperanto' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;L'esp&#233;ranto a connu un regain d'int&#233;r&#234;t avec internet. Aussi on ne peut pas nier que cette langue existe et est utilis&#233;e ! Il y a de nombreuses associations de promotion de l'esp&#233;ranto de part le monde et on peut au moins citer ici 2 beaux projets o&#249; l'esp&#233;ranto est loin d'&#234;tre anecdotique :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href=&#034;http://eo.wikipedia.org/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Wikipedia&lt;/a&gt;, o&#249; il est la 27&#232; langue d'apr&#232;s &lt;a href=&#034;http://meta.wikimedia.org/wiki/Wikipedia_languages&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;leurs statistiques&lt;/a&gt; avec 168 912 articles,&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;http://tatoeba.org&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Tatoeba&lt;/a&gt;, o&#249; il est la 2&#232; langue d'apr&#232;s &lt;a href=&#034;http://tatoeba.org/fre/stats/sentences_by_language&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;leurs statistiques&lt;/a&gt; avec 177 367 phrases.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Le prochain article pr&#233;sente des sites de &lt;a href='https://marcimat.magraine.net/Ressources-pour-l-apprentissage-de' class=&#034;spip_in&#034;&gt;ressources pour apprendre l'esp&#233;ranto&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>SPIP 3, Documents, Mots</title>
		<link>https://marcimat.magraine.net/SPIP-3-Documents-Mots</link>
		<guid isPermaLink="true">https://marcimat.magraine.net/SPIP-3-Documents-Mots</guid>
		<dc:date>2012-06-12T10:10:51Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Matthieu Marcillaud</dc:creator>



		<description>
&lt;p&gt;SPIP 3 permet d'attacher des mots &#224; des documents, et il permet &#233;galement de taguer des documents avec des mots cl&#233;s. Fort pratique certainement, ce qui devient plus d&#233;licat, c'est ensuite les boucles &#224; r&#233;aliser pour retrouver tout cela. Au vu des nombreuses questions sur les listes d'utilisateurs, voici un petit peu d'explication du fonctionnement. &lt;br class='autobr' /&gt; Un &#233;ni&#232;me message d'un utilisateur de SPIP et concepteur de squelette ne comprenait pas pourquoi sa boucle documents ne retournait rien. ... (&#8230;)&lt;/p&gt;


-
&lt;a href="https://marcimat.magraine.net/-Semences-SPIP-" rel="directory"&gt;Semences SPIP&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;SPIP 3 permet d'attacher des mots &#224; des documents, et il permet &#233;galement de taguer des documents avec des mots cl&#233;s. Fort pratique certainement, ce qui devient plus d&#233;licat, c'est ensuite les boucles &#224; r&#233;aliser pour retrouver tout cela. Au vu des nombreuses questions sur les listes d'utilisateurs, voici un petit peu d'explication du fonctionnement.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-4&#034; id=&#034;nav69a8fee09c8e42.03661748&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Les-tables-de-liaisons&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Les-tables-de-liaisons&#034; class=&#034;spip_ancre&#034;&gt;Les tables de liaisons&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Cas-non-ambigus&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Cas-non-ambigus&#034; class=&#034;spip_ancre&#034;&gt;Cas non ambigus&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Cas-ambigus&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Cas-ambigus&#034; class=&#034;spip_ancre&#034;&gt;Cas ambigus&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Des-mots-sur-des-documents-des-documents-sur-des-mots&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Des-mots-sur-des-documents-des-documents-sur-des-mots&#034; class=&#034;spip_ancre&#034;&gt;Des mots sur des documents, des documents sur des mots&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;p&gt;Un &#233;ni&#232;me message d'un utilisateur de SPIP et concepteur de squelette ne comprenait pas pourquoi sa boucle documents ne retournait rien.&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;BOUCLE_doc(DOCUMENTS){id_mot}&gt;...&lt;/textarea&gt;
&lt;p&gt;En fait il s'attendait &#224; ce que la boucle retourne la liste des documents qui ont un mot cl&#233; donn&#233; (les mots cl&#233;s taguent des documents donc). C'est une compr&#233;hension fort logique, vu que c'est ce que fait la boucle :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;BOUCLE_art(ARTICLES){id_mot}&gt;&lt;/textarea&gt;&lt;h2 class=&#034;spip&#034; id='Les-tables-de-liaisons'&gt;Les tables de liaisons&lt;a class='sommaire-back sommaire-back-4' href='#s-Les-tables-de-liaisons' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Mais ce n'est pourtant pas ce qui se passe avec la boucle documents. La diff&#233;rence est simple, il existe une table SQL &#171; spip_documents_liens &#187; qui sert de pivot (on parle souvent de table de liaison) o&#249; est stock&#233;e donc l'information disant tel document est li&#233; &#224; ceci, cela, c'est &#224; dire &#224; des objets &#233;ditoriaux (articles, rubriques, mots, tout ce que l'on veut).&lt;/p&gt;
&lt;p&gt;Il existe la m&#234;me table &#171; spip_mots_liens &#187; qui sert de pivot pour indiquer que tel mot est attach&#233; &#224; tel objet &#233;ditorial, lorsqu'on tague des articles, des documents d'un mot cl&#233;.&lt;/p&gt;
&lt;p&gt;Mais il n'existe pas de table &#171; spip_articles_liens &#187;.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Cas-non-ambigus'&gt;Cas non ambigus&lt;a class='sommaire-back sommaire-back-4' href='#s-Cas-non-ambigus' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Lorsqu'on &#233;crit dans une boucle &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;ARTICLES&lt;/code&gt; le crit&#232;re &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{id_mot}&lt;/code&gt;, SPIP recherche comment il peut faire pour honorer la demande. Il cherche donc si la table SQL &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_articles&lt;/code&gt; poss&#232;de un champ &#171; id_mot &#187; (ce qui n'est pas le cas), et du coup tente de trouver une construction de liaison entre tables SQL (on parle de jointure) qui permet d'obtenir ce id_mot qui est demand&#233;. SPIP remarque que &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_mots_liens&lt;/code&gt; poss&#232;de un champ &#171; id_mot &#187; et va donc demander une jointure avec cette table. &lt;br class='autobr' /&gt;
Il pourrait aussi rechercher une table ayant le couple de champs &#171; objet &#187; et &#171; id_objet &#187; et faire une jointure dessus en indiquant, du coup, que &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;objet=mot&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;id_objet=l'identifiant&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Pour aller plus loin, disons simplement que s'il y a plusieurs possibilit&#233;s de jointure pour obtenir &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;id_mot&lt;/code&gt;, SPIP choisira la jointure la plus courte, c'est &#224; dire qui n&#233;cessite d'interroger le moins de tables SQL possibles.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Cas-ambigus'&gt;Cas ambigus&lt;a class='sommaire-back sommaire-back-4' href='#s-Cas-ambigus' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Indiquer un crit&#232;re &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;{id_mot}&lt;/code&gt; sur une boucle &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;DOCUMENTS&lt;/code&gt; est plus ambigu. Effectivement, SPIP peut choisir de prendre le mot soit sur la liaison &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_documents_liens&lt;/code&gt;, soit sur la liaison &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_mots_liens&lt;/code&gt;. Les deux &#233;tant corrects, mais ils n'ont pas la m&#234;me signification.&lt;/p&gt;
&lt;p&gt;Il faut donc savoir que dans ce cas, SPIP choisit de pr&#233;f&#233;rence une liaison avec la m&#234;me table que celle de la boucle, c'est &#224; dire que comme nous sommes dans une boucle &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;DOCUMENTS&lt;/code&gt;, SPIP choisira de pr&#233;f&#233;rence la liaison avec &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_documents_liens&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Alors, pourquoi y a t'il deux tables de liaisons possibles avec les documents ou avec les mots ? et &#224; quoi servent-elles ? qu'est-ce qui les diff&#233;rencient ?&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Des-mots-sur-des-documents-des-documents-sur-des-mots'&gt;Des mots sur des documents, des documents sur des mots&lt;a class='sommaire-back sommaire-back-4' href='#s-Des-mots-sur-des-documents-des-documents-sur-des-mots' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pour expliquer ce qui se passe :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Les documents en SPIP 3 peuvent &#234;tre sur n'importe quel objet (y compris les mots) (des mots peuvent avoir des documents attach&#233;s)&lt;/li&gt;&lt;li&gt; Les mots en SPIP 3 peuvent &#234;tre mis sur n'importe quel objet (y compris les documents) (des documents peuvent &#234;tre tagu&#233;s par d&#233;s mots)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;On voit bien ici que c'est d&#233;licat pour SPIP de comprendre ce que signifie &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;(DOCUMENTS){id_mot}&lt;/code&gt; : est-ce qu'on veut ?&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; les documents d'un mot cl&#233; ?&lt;/li&gt;&lt;li&gt; les documents tagu&#233;s d'un mot cl&#233; ?&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Il faut donc faire un peu d'analyse de fonctionnement de SPIP pour comprendre ce qui va se passer :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Lorsqu'on lie un document &#224; un objet, la liaison est stock&#233;e dans la table &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_documents_liens&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Lorsqu'on lie un mot &#224; un objet, la liaison est stock&#233;e dans la table &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_mots_liens&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ce que SPIP va d&#233;cider lorsqu'il y a ambigu&#239;t&#233;, c'est &#224; dire comme ici &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;(DOCUMENTS){id_mot}&lt;/code&gt; alors qu'il existe les 2 tables &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_documents_liens&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_mots_liens&lt;/code&gt;, c'est qu'il va pr&#233;f&#233;rer interpr&#233;ter cela comme une liaison sur la table de lien de la boucle en cours, c'est &#224; dire sur &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_documents_liens&lt;/code&gt;, ce qui signifie donc que &#231;a va retourner &#171; les documents attach&#233;s &#224; un mot cl&#233; &#187;&lt;/p&gt;
&lt;p&gt;Pour lever les ambigu&#239;t&#233;s, on peut indiquer, donc, la relation du lien de plusieurs mani&#232;res, lorsqu'on veut l'autre relation :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Soit en l'indiquant comme table : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;(DOCUMENTS mots_liens){id_mot}&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Soit en l'indiquant dans le crit&#232;re &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;(DOCUMENTS){mots_liens.id_mot}&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Il faut noter que mettre simplement &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;(DOCUMENTS){mots.id_mot}&lt;/code&gt; n'est pas suffisant pour lever l'ambigu&#239;t&#233;.&lt;/p&gt;
&lt;p&gt;D'autres exemples :&lt;br class='autobr' /&gt;
Liaison &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_documents_liens&lt;/code&gt; (Les documents attach&#233;s &#224; un mot)&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;BOUCLE_1(DOCUMENTS){id_mot}&gt;#ID_DOCUMENT&lt;/BOUCLE_1&gt;&lt;/textarea&gt;
&lt;p&gt;Liaison &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;spip_mots_liens&lt;/code&gt; (Les documents tagu&#233;s d'un mot)&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='6' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;BOUCLE_2(DOCUMENTS mots_liens){id_mot}&gt;#ID_DOCUMENT&lt;/BOUCLE_2&gt; &lt;BOUCLE_3(DOCUMENTS mots_liens){mots.id_mot}&gt;#ID_DOCUMENT&lt;/BOUCLE_3&gt; &lt;BOUCLE_4(DOCUMENTS){mots_liens.id_mot}&gt;#ID_DOCUMENT&lt;/BOUCLE_4&gt;&lt;/textarea&gt;
&lt;p&gt;Attraper les documents tagu&#233;s avec un mot cl&#233; appartenant &#224; un certain groupe :&lt;/p&gt; &lt;textarea readonly='readonly' cols='40' rows='9' class='spip_cadre spip_cadre_block' dir='ltr'&gt;&lt;BOUCLE_doc_groupe(DOCUMENTS mots_liens) {mots.id_groupe=1}&gt; #ID_DOCUMENT &lt;/BOUCLE_doc_groupe&gt; &lt;BOUCLE_doc_groupe_type(DOCUMENTS mots_liens) {mots.type=Nom}&gt; #ID_DOCUMENT &lt;/BOUCLE_doc_groupe_type&gt;&lt;/textarea&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Livre libre &#171; Programmer avec SPIP &#187;</title>
		<link>https://marcimat.magraine.net/Livre-libre-Programmer-avec-SPIP</link>
		<guid isPermaLink="true">https://marcimat.magraine.net/Livre-libre-Programmer-avec-SPIP</guid>
		<dc:date>2010-05-18T17:12:53Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Matthieu Marcillaud</dc:creator>



		<description>
&lt;p&gt;T&#244;t ce matin a &#233;t&#233; propos&#233;e officiellement la premi&#232;re version du livre &#171; Programmer avec SPIP &#187; pouvant &#234;tre achet&#233;e en ligne chez un imprimeur &#171; &#224; la demande &#187;. Cette &#171; &#201;dition Troglo2 &#187;, sous licence libre (cc-by-sa), est un export complet du site http://programmer.spip.org en date du 16 mai 2010. Il est diffus&#233; chez Lulu dans un format A5 &#224; spirale. Retours sur cette exp&#233;rience. &lt;br class='autobr' /&gt; L'id&#233;e a germ&#233; un jour de fin 2008 o&#249; l'on m'a r&#233;mun&#233;r&#233; quelques jours pour &#233;crire des pages d'une (&#8230;)&lt;/p&gt;


-
&lt;a href="https://marcimat.magraine.net/-Semences-SPIP-" rel="directory"&gt;Semences SPIP&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;T&#244;t ce matin a &#233;t&#233; propos&#233;e officiellement la premi&#232;re version du livre &#171; Programmer avec SPIP &#187; &lt;a href=&#034;http://www.lulu.com/product/item/programmer-avec-spip/11019986&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;pouvant &#234;tre achet&#233;e en ligne&lt;/a&gt; chez un imprimeur &#171; &#224; la demande &#187;. Cette &#171; &#201;dition Troglo2 &#187;, sous licence libre (cc-by-sa), est un export complet du site &lt;a href=&#034;http://programmer.spip.org&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;http://programmer.spip.org&lt;/a&gt; en date du 16 mai 2010. Il est diffus&#233; chez Lulu dans un format A5 &#224; spirale. Retours sur cette exp&#233;rience.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;!--sommaire--&gt;&lt;div class=&#034;well nav-sommaire nav-sommaire-5&#034; id=&#034;nav69a8fee0a963c8.04174734&#034;&gt;
&lt;h2&gt;Sommaire&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a id=&#034;s-Technique-autant-que-redactionnel&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Technique-autant-que-redactionnel&#034; class=&#034;spip_ancre&#034;&gt;Technique autant que r&#233;dactionnel&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-De-la-relecture-aux-traductions&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#De-la-relecture-aux-traductions&#034; class=&#034;spip_ancre&#034;&gt;De la relecture aux traductions&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-D-un-fichier-pdf-a-un-livre&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#D-un-fichier-pdf-a-un-livre&#034; class=&#034;spip_ancre&#034;&gt;D'un fichier pdf &#224; un livre&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-Des-deceptions&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#Des-deceptions&#034; class=&#034;spip_ancre&#034;&gt;Des d&#233;ceptions...&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a id=&#034;s-aux-perspectives&#034;&gt;&lt;/a&gt;&lt;a href=&#034;#aux-perspectives&#034; class=&#034;spip_ancre&#034;&gt;... aux perspectives&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;!--/sommaire--&gt;&lt;p&gt;L'id&#233;e a germ&#233; un jour de fin 2008 o&#249; l'on m'a r&#233;mun&#233;r&#233; quelques jours pour &#233;crire des pages d'une documentation technique, peu de temps apr&#232;s la sortie de SPIP 2.0. Il y avait des trous b&#233;ants sur des absences de documentation de certaines fonctionnalit&#233;s qu'il &#233;tait int&#233;ressant de combler.&lt;/p&gt;
&lt;p&gt;Puisque mon &#233;diteur de texte favori est l'interface priv&#233;e de SPIP, j'ai commenc&#233; une s&#233;rie d'articles en local, sous SPIP. Je les voulais coh&#233;rents, se suivant logiquement, courts pour mettre peu d'id&#233;es sur une m&#234;me page et ne pas effrayer le lecteur de la quantit&#233; de texte &#224; lire, et actualis&#233;s pour la derni&#232;re version de SPIP.&lt;/p&gt;
&lt;p&gt;Un squelette SPIP pour lire plus agr&#233;ablement cette suite d'articles et de rubriques a &#233;t&#233; &#233;labor&#233; dans le m&#234;me temps, rendant la navigation plus agr&#233;able. Puis le tout a &#233;t&#233; mis en ligne d&#233;but 2009 (je ne me rappelle plus pr&#233;cis&#233;ment).&lt;/p&gt;
&lt;p&gt;Au fil des jours, sur mon temps libre, je compl&#233;tais ces premi&#232;res pages par d'autres, puis par d'autres encore. Un nom de domaine fut alors attribu&#233; au projet : programmer.spip.org ... L'id&#233;e germait de non seulement avoir en ligne &#171; comme &#187; un livre, mais d'un jour aussi r&#233;ussir &#224; en proposer une v&#233;ritable version papier.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Technique-autant-que-redactionnel'&gt;Technique autant que r&#233;dactionnel&lt;a class='sommaire-back sommaire-back-5' href='#s-Technique-autant-que-redactionnel' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ce qu'il est difficile d'imaginer en parcourant les 338 pages de l'exemplaire sp&#233;cial &#171; Troglo SPIP &#187; que j'ai sous les yeux, c'est que sa cr&#233;ation a n&#233;cessit&#233; presque autant de temps pour la technique sur le site et pour g&#233;n&#233;rer le livre que pour l'&#233;criture en elle-m&#234;me. Au fil de la progression du site, de nouvelles contraintes &#224; r&#233;soudre apparaissent.&lt;/p&gt;
&lt;p&gt;C'est d'abord un niveau de sous-rubriques &#224; prendre en compte en plus, c'est une meilleure lisibilit&#233; par l&#224;, c'est de l'AJAX &#224; mettre ici pour &#233;viter des pages trop volumineuses, c'est d'installer un syst&#232;me pour que les visiteurs puissent proposer des am&#233;liorations, c'est g&#233;rer les balises &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;multi&gt;&lt;/code&gt; sur 2 langues et quelques dizaines de rubriques lorsque des traducteurs anglais investissent l'espace &#233;ditorial... puis il y a trop de rubriques et cela devient invivable alors c'est encore mettre un niveau de sous-rubriques en plus pour g&#233;rer les langues, puis c'est permettre de d&#233;clarer des traductions entre rubriques via un plugin (tradrub), puis c'est fournir des outils aux traducteurs pour suivre les modifications un rien plus simplement (tradsync), en m&#234;me temps, c'est ajouter des mots cl&#233;s pour que le livre puisse g&#233;n&#233;rer un glossaire, c'est cr&#233;er les outils pour exporter le contenu entier du site, et exporter le r&#233;sultat dans un format PDF convenable (via PrinceXML), et adapter la CSS d'impression pour rendre les textes encore plus contrast&#233;s que sur l'&#233;cran, et patati... et patata... et j'en passe et des meilleures.&lt;/p&gt;
&lt;p&gt;Tout cela aurait certainement &#233;t&#233; plus facile en &#233;crivant directement dans OpenOffice ou dans un logiciel sp&#233;cialis&#233;. Mais.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='De-la-relecture-aux-traductions'&gt; De la relecture aux traductions &lt;a class='sommaire-back sommaire-back-5' href='#s-De-la-relecture-aux-traductions' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Mais l'immense avantage d'une interface de r&#233;daction collaborative en ligne, telle que celle de SPIP, c'est de permettre &#224; tous les visiteurs de participer, tant sur la r&#233;daction d'articles que sur les relectures.&lt;/p&gt;
&lt;p&gt;Et heureusement ! Combien de fautes ou de tournures de phrases lourdes, ou d'id&#233;es mal exprim&#233;es ont pu &#234;tre corrig&#233;es gr&#226;ce &#224; la vigilance et &#224; la participation des diff&#233;rents lecteurs. Elles furent nombreuses ; nul n'est &#224; l'abri d'un coup de fatigue :). Il y a un regard multiple sur le contenu et c'est en cela que c'est tr&#232;s int&#233;ressant : apporter ce que l'on peut, ou m&#234;me dire &#171; je ne comprends pas &#187; permet d'am&#233;liorer au final l'ensemble du livre.&lt;/p&gt;
&lt;p&gt;Ma plus grande surprise, peut-&#234;tre, dans cette histoire, est l'arriv&#233;e spontan&#233;e de traducteurs. Une envie de faire d&#233;couvrir la technique de SPIP par del&#224; les fronti&#232;res. Nous avons volontairement brid&#233; les tentations dans un premier temps, puis autoris&#233; les traductions en une premi&#232;re langue, l'anglais, pour tester le fonctionnement des squelettes (&#231;a a n&#233;cessit&#233; diverses exp&#233;rimentations), puis le multilinguisme semblant fonctionner, nous avons ouvert r&#233;cemment la porte &#224; une seconde langue, l'espagnol.&lt;/p&gt;
&lt;p&gt;Passer d'un site monolingue &#224; un site multilingue implique des choix techniques qui ne sont pas &#233;vidents &#224; trancher. Je suis encore &#224; l'heure actuelle tr&#232;s sceptique sur certaines difficult&#233;s tel que &#171; comment traduire un mot cl&#233; ? &#187;. Pour l'instant &#231;a fait des titres avec des balises &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;multi&gt;&lt;/code&gt; contenant 3 langues... mais cela va vite &#234;tre difficile s'il y a 8 langues &#224; g&#233;rer... On a &#233;vacu&#233; tr&#232;s fi&#232;rement ce probl&#232;me avec les rubriques en cr&#233;ant&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;enfin en le mettant &#224; jour &#171; from scratch &#187;&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt; un plugin (tradrub) permettant de cr&#233;er et g&#233;rer des traductions entre rubriques. Mais il reste ces maux, ou mots... Affaire &#224; suivre de ce c&#244;t&#233;. Mais revenons aux traducteurs...&lt;/p&gt;
&lt;p&gt;En anglais, au d&#233;but est arriv&#233; Gilles, puis Thomas qui ont tranquillement r&#233;alis&#233; plus de 40 traductions. Et un jour Mark Baber a d&#233;barqu&#233; ! Et... quelques semaines plus tard tout &#233;tait traduit en anglais. C'est quelque chose de fabuleux. Quelques relecteurs attentifs comme Paolo &#233;liminent les derniers coquilles anglaises et on se retrouve &#224; tr&#232;s prochainement proposer la premi&#232;re, toute premi&#232;re &#233;dition d'un livre SPIP dans une autre langue que le fran&#231;ais.&lt;/p&gt;
&lt;p&gt;C'est l&#224;, &#224; ce moment l&#224;, qu'on s'aper&#231;oit de la force d'une communaut&#233; multilingue et d'un logiciel SPIP parfaitement adapt&#233; &#224; presque toutes les probl&#233;matiques de traduction.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='D-un-fichier-pdf-a-un-livre'&gt;D'un fichier pdf &#224; un livre&lt;a class='sommaire-back sommaire-back-5' href='#s-D-un-fichier-pdf-a-un-livre' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;R&#233;aliser un livre lorsque l'on a qu'une page HTML &#224; la base semble un rien difficile. Les imprimeurs &#224; la demande, qui sont vraiment tr&#232;s adapt&#233;s pour de petites s&#233;ries de livres, r&#233;alisent des impressions num&#233;riques &#224; partir de fichiers au format PDF. L'enjeu consiste donc &#224; transformer un contenu au format HTML en un contenu au format PDF mis en page. Cela semble tr&#232;s simple au premier abord.&lt;/p&gt;
&lt;p&gt;On peut avoir comme id&#233;e de g&#233;n&#233;rer une page HTML et de l'importer dans OpenOffice (ou de le g&#233;n&#233;rer directement en .odt avec le plugin SPIP adapt&#233;), d'ins&#233;rer table des mati&#232;res et pieds de page, puis d'enregistrer le tout en PDF. Oui... mais... Voici quelques probl&#232;mes rencontr&#233;s : comment g&#233;rer les renvois et afficher sur les liens internes au document les num&#233;ros de pages auxquels ils correspondent ? comment faire prendre en compte la coloration syntaxique des codes HTML sans que cela fasse une liste extr&#234;mement vilaine de morceaux de mots ? comment g&#233;n&#233;rer automatiquement des sections (au sens OpenOffice) &#224; partir du HTML pour que le titre des chapitres apparaisse bien dans l'ent&#234;te de toutes les pages du chapitre concern&#233; ? Au bout du compte on remarque qu'on ne maitrise pas assez OOo pour cela.&lt;/p&gt;
&lt;p&gt;Une autre id&#233;e, est d'utiliser les comp&#233;tences de CSS3. Car CSS3 est en outre pr&#233;vu pour g&#233;rer des impressions papiers. On donne le format, on cr&#233;e des types de pages, indique quel texte placer dans l'ent&#234;te, on peut aussi ajouter des renvois vers les num&#233;ros de page correspondant sur les liens internes... C'est extr&#234;mement puissant.&lt;/p&gt;
&lt;p&gt;Mais voil&#224;... Qui g&#232;re ces propri&#233;t&#233;s de CSS3 suffisamment correctement ? aucun navigateur ! Ils en connaissent quelques-unes, comme la prise en compte des sauts de page souvent, mais pas toutes. Peu se d&#233;brouillent avec les marges, les formats du papier, les ent&#234;tes et pieds de page comme il faut.&lt;/p&gt;
&lt;p&gt;Je n'ai crois&#233; &#224; ce jour qu'un seul logiciel capable de prendre en entr&#233;e un fichier HTML, de r&#233;cup&#233;rer sa CSS3, et de g&#233;n&#233;rer le PDF attendu. C'est PrinceXML, logiciel qui n'est malheureusement pas libre, mais dont l'usage sur une machine locale est autoris&#233;e, du moins pour la version 7.0 que j'utilise, mais je vois aujourd'hui qu'ils ont sorti ce mois-ci une version 7.1 et que la licence me semble diff&#233;rente de ce qu'elle &#233;tait en restreignant bien plus l'usage de la version gratuite... C'est tr&#232;s ennuyant ! Bref, &#231;a serait bien de trouver ou cr&#233;er une alternative libre ! Ou utiliser d'autres m&#233;caniques, quitte &#224; se passer de la coloration syntaxique...&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='Des-deceptions'&gt;Des d&#233;ceptions... &lt;a class='sommaire-back sommaire-back-5' href='#s-Des-deceptions' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Outre la difficult&#233; de mise en &#339;uvre technique &#8211; mais j'aime ces d&#233;fis &#8211; c'est l'organisation et la coh&#233;rence des chapitres que je trouve complexe &#224; trouver. J'avais lanc&#233; sur la liste de discussion spip-devel un sujet, en demandant &#171; s'il existait un livre sur la programmation avec SPIP, quelle serait sa table des mati&#232;res id&#233;ale &#187;. J'ai &#233;t&#233; finalement d&#233;&#231;u par le peu de r&#233;ponses apport&#233;es ou qui disaient que l'organisation du site &#233;tait d&#233;j&#224; tr&#232;s bien comme &#231;a. J'imaginais qu'&#224; plusieurs on arriverait &#224; trouver un chapitrage qui me/nous conviendrait et ce ne fut pas vraiment le cas. Du coup, je ne suis pas sp&#233;cialement satisfait de l'ordre des chapitres de cette version 1, de leur enchev&#234;trement. Cela manque, je trouve, de fil conducteur, de lien.&lt;/p&gt;
&lt;p&gt;L'autre &#233;l&#233;ment d'insatisfaction c'est que cette version sort alors que j'ai le sentiment de n'avoir pas tout dit, qu'il reste plein de zones d'ombres, que certaines parties ne sont pas claires ou &#224; r&#233;&#233;crire, qu'il y a des absences, des chapitres commenc&#233;s mais pas finis comme &#171; d&#233;velopper des plugins &#187; o&#249; l'on a de quoi rester sur sa faim.&lt;/p&gt;
&lt;p&gt;Je suis triste de cela, et en m&#234;me temps, je pense que je n'arriverai jamais &#224; &#234;tre 100% satisfait. Ce livre est une photo du site &#224; un instant &lt;i&gt;t&lt;/i&gt; et &#224; cet instant l&#224;, des parties sont excellentes et d'autres &#224; terminer, mais c'est toujours mieux que s'il n'y avait rien. Il faut savoir &#224; un moment dire (merci BennyB) : &#171; bon, on y va ? &#187;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034; id='aux-perspectives'&gt;... aux perspectives&lt;a class='sommaire-back sommaire-back-5' href='#s-aux-perspectives' title='Retour au sommaire'&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;L'avenir est soumis &#224; bien des incertitudes. D&#233;j&#224; : ce livre va-t-il plaire ? &#233;tait-il attendu ? sera-t-il utilis&#233; ? Nous verrons les retours dans quelques temps... Mais d&#233;j&#224; nous avons r&#233;ussi un beau d&#233;fi : oui, on peut r&#233;aliser un livre libre, r&#233;dig&#233; partiellement de mani&#232;re collaborative, proposer &#224; tous le pdf, le faire imprimer et le commercialiser. Cela marche. M&#234;me pour les traductions. On peut donc imaginer de nouveaux d&#233;fis, d'autres perspectives :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; sortir une version anglaise (99,9% est d&#233;j&#224; traduit)&lt;/li&gt;&lt;li&gt; sortir une version espagnole (13% traduit) : souhaitons courage aux hispanophones et &#224; Sylvano qui a d&#233;marr&#233; sur les chapeaux de roues !&lt;/li&gt;&lt;li&gt; ajouter pour la prochaine version des divertissements, par des illustrations ou strips horizontaux, pour all&#233;ger le c&#244;t&#233; tr&#232;s formel du texte&lt;/li&gt;&lt;li&gt; cr&#233;er une trilogie &#171; Publier | Personnaliser | Programmer &#187; ou encore &#171; Utiliser | Cr&#233;er son site | Programmer &#187;, bref, quelque chose par type d'utilisateurs : du r&#233;dacteur/administrateur/traducteur, puis le bidouilleur/installateur/webmestre , et enfin pour les webmestres qui triturent les codes et autres d&#233;veloppeurs...&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&#192; vous aussi, lecteurs, de proposer des am&#233;liorations. Ne pas oublier qu'il y a des tas de mani&#232;res de participer &#224; son &#233;chelle sur la galaxie SPIP, entre l'organisation d'&#233;v&#232;nements locaux, les traductions, les retours d'exp&#233;rience, les rapports de bugs, les contributions sur les forums, les encouragements verbaux, de l'&#233;criture de documentation, de contributions. Partage et ouverture. Ah, et si possible avec un peu de tendresse :)&lt;/p&gt;
&lt;div class='spip_document_250 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;144&#034; data-legende-lenx=&#034;xxx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href=&#034;http://www.lulu.com/product/item/programmer-avec-spip/11019986&#034; class=&#034;spip_out spip_doc_lien&#034;&gt; &lt;img src='https://marcimat.magraine.net/local/cache-vignettes/L224xH320/320_7975571-f30c2.jpg?1765794025' width='224' height='320' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre crayon document-titre-250 '&gt;&lt;strong&gt;Couverture du livre &#171; Programmer avec SPIP &#187;&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif crayon document-descriptif-250 '&gt;Premi&#232;re version officiellement en vente, l' &#171; &#201;dition Troglo2 &#187; de mai 2010.&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div &lt;div class='rss_ps'&gt;&lt;p&gt;J'en profite pour dire un GRAND MERCI &#224; tous ceux qui de pr&#232;s ou de loin ont apport&#233; leur pierre, leur regard, leur savoir, leur temps pour le site Programmer.spip.org ou pour le livre. Il y a de beaux et braves gens derri&#232;re tous ces textes et codes informatiques. Les &lt;a href=&#034;http://spip-party.net/Troglo-2010&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Troglos2&lt;/a&gt; pour ceux qui ont pu s'y d&#233;placer, est un excellent &#233;v&#232;nement qui soude, motive, donne du soleil, et je suis heureux d'avoir crois&#233; certains d'entre vous &#224; cette occasion.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;enfin en le mettant &#224; jour &#171; from scratch &#187;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Pr&#233;sence</title>
		<link>https://marcimat.magraine.net/Presence</link>
		<guid isPermaLink="true">https://marcimat.magraine.net/Presence</guid>
		<dc:date>2008-09-12T08:49:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Matthieu Marcillaud</dc:creator>



		<description>
&lt;p&gt;La foule se lie ou se d&#233;lie De gens mouvants aux quatre vents La fourmili&#232;re de Paris Au matin fuit toujours le temps Chacune des galeries emplies Dans le flux de tous les instants Prom&#232;ne quelques &#226;mes fleuries Et nombre de visages absents Et c'est ainsi que je surgis A Montparnasse comme un enfant Je m'y &#233;l&#232;ve et je grandis Jusqu'&#224; son parc verdoyant Dans les douceurs de ce jardin O&#249; coule un calme reposant L'esprit qui capte ces parfums Oublie, oublie, oublie le temps.&lt;/p&gt;


-
&lt;a href="https://marcimat.magraine.net/-Paroles-en-air-" rel="directory"&gt;Paroles en air...&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;blockquote class=&#034;spip_poesie&#034;&gt;&lt;div&gt;La foule se lie ou se d&#233;lie&lt;/div&gt;
&lt;div&gt;De gens mouvants aux quatre vents&lt;/div&gt;
&lt;div&gt;La fourmili&#232;re de Paris&lt;/div&gt;
&lt;div&gt;Au matin fuit toujours le temps&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Chacune des galeries emplies&lt;/div&gt;
&lt;div&gt;Dans le flux de tous les instants&lt;/div&gt;
&lt;div&gt;Prom&#232;ne quelques &#226;mes fleuries&lt;/div&gt;
&lt;div&gt;Et nombre de visages absents&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Et c'est ainsi que je surgis&lt;/div&gt;
&lt;div&gt;A Montparnasse comme un enfant&lt;/div&gt;
&lt;div&gt;Je m'y &#233;l&#232;ve et je grandis&lt;/div&gt;
&lt;div&gt;Jusqu'&#224; son parc verdoyant&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;Dans les douceurs de ce jardin&lt;/div&gt;
&lt;div&gt;O&#249; coule un calme reposant&lt;/div&gt;
&lt;div&gt;L'esprit qui capte ces parfums&lt;/div&gt;
&lt;div&gt;Oublie, oublie, oublie le temps.&lt;/div&gt;
&lt;/blockquote&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div &lt;div class='rss_ps'&gt;&lt;p&gt;Texte &#233;crit dans le train juste apr&#232;s un passage au jardin Atlantique. Ce petit bout de verdure m'avait d&#233;j&#224; appel&#233; il y a deux ans : &lt;a href='https://marcimat.magraine.net/Paradis-sur-gare' class=&#034;spip_in&#034;&gt;Paradis sur gare&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
