<?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/"
>

<channel>
	<title>SPIP-Contrib</title>
	<link>http://www.spip-contrib.net/</link>
	<description>Le site des contributions &#224; SPIP
</description>
	<language>fr</language>
	<generator>SPIP - www.spip-contrib.net</generator>

	<image>
		<title>SPIP-Contrib</title>
		<url>http://www.spip-contrib.net/IMG/siteon0.png?1229799194</url>
		<link>http://www.spip-contrib.net/</link>
		<height>250</height>
		<width>261</width>
	</image>


	



	<item>
		<title>Badge pour dons</title>
		<link>http://www.spip-contrib.net/Badge-pour-dons</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Badge-pour-dons</guid>
		<dc:date>2012-02-08T13:33:55Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>b_b</dc:creator>

<category domain="http://www.spip-contrib.net/Badge-pour-dons-1579">Badge pour dons</category>

		<dc:subject>SPIP 2.0</dc:subject>
		<dc:subject>SPIP 2.1</dc:subject>
		<dc:subject>Plugins</dc:subject>
		<dc:subject>Flux des plugins</dc:subject>

		<description>
&lt;p&gt;Ce plugin permet d'afficher un badge dans les pages publiques de votre site pour inciter les visiteurs &#224; faire des dons. Ce plugin a &#233;t&#233; r&#233;alis&#233; afin d'afficher un badge d'appel au don sur plusieurs sites g&#233;r&#233;s par l'association &#171; Les petits d&#233;brouillards Bretagne &#187;. Le badge est affich&#233; dans le coin en bas &#224; droite des pages publiques du site et il comporte un lien vers la page de votre choix. Vous pouvez observer le r&#233;sultat sur le site de l'association et sur le site lestaxinomes.org. Installation et (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Badge-pour-dons-1579" rel="directory"&gt;Badge pour dons&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/SPIP-2-0,261" rel="tag"&gt;SPIP 2.0&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-2-1" rel="tag"&gt;SPIP 2.1&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Plugins,112" rel="tag"&gt;Plugins&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Plugins-pour-SPIP-2-0" rel="tag"&gt;Flux des plugins&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/arton4072.png?1328703721&quot; width=&quot;128&quot; height=&quot;128&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Ce plugin permet d'afficher un badge dans les pages publiques de votre site pour inciter les visiteurs &#224; faire des dons.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Ce plugin a &#233;t&#233; r&#233;alis&#233; afin d'afficher un badge d'appel au don sur plusieurs sites g&#233;r&#233;s par l'association &#171; Les petits d&#233;brouillards Bretagne &#187;. Le badge est affich&#233; dans le coin en bas &#224; droite des pages publiques du site et il comporte un lien vers la page de votre choix.&lt;/p&gt; &lt;p&gt;Vous pouvez observer le r&#233;sultat sur &lt;a href=&quot;http://www.lespetitsdebrouillardsbretagne.org/&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;le site de l'association&lt;/a&gt; et sur le site &lt;a href=&quot;http://www.lestaxinomes.org/&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;lestaxinomes.org&lt;/a&gt;.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Installation et configuration&lt;/h3&gt;&lt;dl class=&#039;spip_document_10432 spip_documents spip_documents_center&#039;&gt;
&lt;dt&gt;&lt;a href=&quot;http://files.spip.org/spip-zone/badge_don.zip&quot; title=&#039;Zip - 17.2&#160;ko&#039; type=&quot;application/zip&quot;&gt;&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L52xH52/zip-8890c.png&#039; width=&#039;52&#039; height=&#039;52&#039; alt=&#039;Zip - 17.2&#160;ko&#039; style=&#039;&#039; /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class=&#039;crayon document-titre-10432 spip_doc_titre&#039; style=&#039;width:120px;&#039;&gt;&lt;strong&gt;Plugin Badge pour dons&lt;/strong&gt;&lt;/dt&gt;
&lt;dd class=&#039;crayon document-descriptif-10432 spip_doc_descriptif&#039; style=&#039;width:120px;&#039;&gt;T&#233;l&#233;charger le plugin sur la zone.
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;a href=&quot;http://www.spip.net/fr_article3396.html&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;Installation et activation comme tous les plugins&lt;/a&gt;.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Configuration et personnalisation&lt;/h3&gt;
&lt;p&gt;L'url du lien du badge est personnalisable de deux fa&#231;ons. Vous pouvez d&#233;clarer l'url depuis le fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;config/mes_options.php&lt;/code&gt; de votre site en y ajoutant la ligne suivante :&lt;/p&gt; &lt;textarea readonly=&#039;readonly&#039; cols=&#039;40&#039; rows=&#039;2&#039; class=&#039;spip_cadre&#039; dir=&#039;ltr&#039;&gt;define(&#039;_BADGE_DON_URL&#039;, &#039;http://www.spip.net&#039;);&lt;/textarea&gt;
&lt;p&gt;Si &lt;a href=&quot;http://www.spip-contrib.net/SPIP-Bonux&quot; class=&#039;spip_in&#039;&gt;le plugin SPIP-bonux&lt;/a&gt; est install&#233;, vous pouvez aussi d&#233;clarer l'url de la page de don depuis la page de configuration du plugin.&lt;/p&gt;
&lt;dl class=&#039;spip_document_10431 spip_documents spip_documents_center&#039;&gt;
&lt;dt&gt;&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L100xH100/badge_don-3dc2b.png&#039; width=&#039;100&#039; height=&#039;100&#039; alt=&#039;PNG - 6.8&#160;ko&#039; style=&#039;&#039; /&gt;&lt;/dt&gt;
&lt;dt class=&#039;crayon document-titre-10431 spip_doc_titre&#039; style=&#039;width:120px;&#039;&gt;&lt;strong&gt;Badge par d&#233;faut - CC-BY Les petits d&#233;brouillards Bretagne&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Vous pouvez aussi personnaliser l'image affich&#233;e par le badge en d&#233;posant un fichier nomm&#233; &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;badge_don.png&lt;/code&gt; dans le r&#233;pertoire &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;squelettes/images&lt;/code&gt; de votre site. Votre image personnalis&#233;e doit &#234;tre un carr&#233; de 100 pixels de c&#244;t&#233;.&lt;/p&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;Ce plugin permet d&#039;afficher un badge dans les pages publiques de votre site pour inciter les visiteurs &#224; faire des dons.&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;Ce plugin a &#233;t&#233; r&#233;alis&#233; afin d&#039;afficher un badge d&#039;appel au don sur plusieurs sites g&#233;r&#233;s par l&#039;association &#171;Les petits d&#233;brouillards Bretagne&#187;. Le badge est affich&#233; dans le coin en bas &#224; droite des pages publiques du site et il comporte un lien vers la page de votre choix. Vous pouvez observer le r&#233;sultat sur [le site de l&#039;association-&gt;http://www.lespetitsdebrouillardsbretagne.org/] et sur le site [lestaxinomes.org-&gt;http://www.lestaxinomes.org/]. {{{Installation et configuration}}} &lt;doc10432|center&gt; [Installation et activation comme tous les plugins-&gt;http://www.spip.net/fr_article3396.html]. {{{Configuration et personnalisation}}} L&#039;url du lien du badge est personnalisable de deux fa&#231;ons. Vous pouvez d&#233;clarer l&#039;url depuis le fichier &lt;code&gt;config/mes_options.php&lt;/code&gt; de votre site en y ajoutant la ligne suivante : &lt;cadre&gt;define(&#039;_BADGE_DON_URL&#039;, &#039;http://www.spip.net&#039;);&lt;/cadre&gt; Si [le plugin SPIP-bonux-&gt;2857] est install&#233;, vous pouvez aussi d&#233;clarer l&#039;url de la page de don depuis la page de configuration du plugin. &lt;doc10431|center&gt; Vous pouvez aussi personnaliser l&#039;image affich&#233;e par le badge en d&#233;posant un fichier nomm&#233; &lt;code&gt;badge_don.png&lt;/code&gt; dans le r&#233;pertoire &lt;code&gt;squelettes/images&lt;/code&gt; de votre site. Votre image personnalis&#233;e doit &#234;tre un carr&#233; de 100 pixels de c&#244;t&#233;.&lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		

	</item>



	<item>
		<title>Brownygreen</title>
		<link>http://www.spip-contrib.net/Brownygreen</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Brownygreen</guid>
		<dc:date>2012-02-03T16:26:49Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>E-cosystems</dc:creator>

<category domain="http://www.spip-contrib.net/Themes">Th&#232;mes</category>

		<dc:subject>SPIP 2.0</dc:subject>
		<dc:subject>SPIP 2.1</dc:subject>
		<dc:subject>SPIP 3.0</dc:subject>
		<dc:subject>Th&#232;me</dc:subject>
		<dc:subject>Z-Compatible</dc:subject>
		<dc:subject>sur SPIP-Zone</dc:subject>

		<description>
&lt;p&gt;Un th&#232;me simple de couleur marron et vert, en largeur fixe, constitu&#233; de 2 colonnes avec une en-t&#234;te facilement personnalisable. Pr&#233;sentation Adaptation de Versatility par E-cosystems. Si vous utilisez le plugin Menus, une navigation principale avec sous-menus est pr&#233;vue et mise en page dans ce th&#232;me. D&#233;monstration http://zpip.spip.org/?var_theme=zpip-1/brownygreen Capture&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Themes" rel="directory"&gt;Th&#232;mes&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/SPIP-2-0,261" rel="tag"&gt;SPIP 2.0&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-2-1" rel="tag"&gt;SPIP 2.1&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-3-0" rel="tag"&gt;SPIP 3.0&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Theme" rel="tag"&gt;Th&#232;me&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Z-Compatible" rel="tag"&gt;Z-Compatible&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/sur-SPIP-Zone" rel="tag"&gt;sur SPIP-Zone&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/arton4070.png?1328286404&quot; width=&quot;460&quot; height=&quot;296&quot; /&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt;Un th&#232;me simple de couleur marron et vert, en largeur fixe, constitu&#233; de 2 colonnes avec une en-t&#234;te facilement personnalisable.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Pr&#233;sentation&lt;/h3&gt;
&lt;p&gt;Adaptation de &lt;a href=&quot;http://www.spip-contrib.net/Versatility&quot; class=&#039;spip_out&#039;&gt;Versatility&lt;/a&gt; par &lt;a href=&quot;http://www.e-cosystems.org/&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;E-cosystems&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Si vous utilisez le plugin Menus, une navigation principale avec sous-menus est pr&#233;vue et mise en page dans ce th&#232;me.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;D&#233;monstration&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://zpip.spip.org/?var_theme=zpip-1/brownygreen&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://zpip.spip.org/?var_theme=zpip-1/brownygreen&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Capture&lt;/h3&gt;
&lt;p&gt;&lt;span class=&#039;spip_document_10422 spip_documents spip_documents_center&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L460xH296/capture-9-30bd2.png&#039; width=&#039;460&#039; height=&#039;296&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
		
&lt;div class='raw_texte'&gt;{{Un th&#232;me simple de couleur marron et vert, en largeur fixe, constitu&#233; de 2 colonnes avec une en-t&#234;te facilement personnalisable.}} {{{Pr&#233;sentation}}} Adaptation de [Versatility-&gt;http://www.spip-contrib.net/Versatility] par [E-cosystems-&gt;http://www.e-cosystems.org/]. Si vous utilisez le plugin Menus, une navigation principale avec sous-menus est pr&#233;vue et mise en page dans ce th&#232;me. {{{D&#233;monstration}}} http://zpip.spip.org/?var_theme=zpip-1/brownygreen {{{Capture}}} &lt;img10422|center&gt;&lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		
		<enclosure url="http://files.spip.org/spip-zone/theme_brownygreen.zip" length="1240965" type="application/zip" />
		

	</item>



	<item>
		<title>Navigation AJAX</title>
		<link>http://www.spip-contrib.net/Navigation-AJAX</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Navigation-AJAX</guid>
		<dc:date>2012-01-31T17:06:59Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>bystrano</dc:creator>

<category domain="http://www.spip-contrib.net/Navigation-AJAX-1575">Navigation AJAX</category>

		<dc:subject>Licence GPL</dc:subject>
		<dc:subject>Plugins</dc:subject>
		<dc:subject>Interface Fran&#231;ais</dc:subject>
		<dc:subject>Backoffice English</dc:subject>
		<dc:subject>Navigation</dc:subject>
		<dc:subject>D&#233;veloppeurs</dc:subject>
		<dc:subject>Flux des plugins</dc:subject>
		<dc:subject>Webmestre</dc:subject>
		<dc:subject>SPIP 2.1</dc:subject>

		<description>
&lt;p&gt;Ce plugin permet de modifier automatiquement une parties des liens internes de mani&#232;re &#224; ce qu'ils ne d&#233;clenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains &#233;l&#233;ments sp&#233;cifi&#233;s &#224; l'avance. Il permet aussi de sp&#233;cifier des &#233;l&#233;ments qui ne seront recharg&#233;s qu'en cas de changement de langue. En clair, imaginons que nous sommes sur la page de sommaire de votre site, et qu'on clique sur un lien vers l'article no123. Le navigateur recharge alors la page en entier, y (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Navigation-AJAX-1575" rel="directory"&gt;Navigation AJAX&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/Licence-GPL" rel="tag"&gt;Licence GPL&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Plugins,112" rel="tag"&gt;Plugins&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Interface-Francais" rel="tag"&gt;Interface Fran&#231;ais&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Backoffice-English" rel="tag"&gt;Backoffice English&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Navigation,178" rel="tag"&gt;Navigation&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Developpeurs" rel="tag"&gt;D&#233;veloppeurs&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Plugins-pour-SPIP-2-0" rel="tag"&gt;Flux des plugins&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Webmestre" rel="tag"&gt;Webmestre&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-2-1" rel="tag"&gt;SPIP 2.1&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/arton4063.png?1328027352&quot; width=&quot;128&quot; height=&quot;128&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Ce plugin permet de modifier automatiquement une parties des liens internes de mani&#232;re &#224; ce qu'ils ne d&#233;clenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains &#233;l&#233;ments sp&#233;cifi&#233;s &#224; l'avance.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Il permet aussi de sp&#233;cifier des &#233;l&#233;ments qui ne seront recharg&#233;s qu'en cas de changement de langue.&lt;/p&gt; &lt;p&gt;En clair, imaginons que nous sommes sur la page de sommaire de votre site, et qu'on clique sur un lien vers l'article no123. Le navigateur recharge alors la page en entier, y compris des &#233;l&#233;ments qui restent identiques, comme le pied de page ou l'en-t&#234;te. Avec &#8220;Navigation AJAX&#8221;, vous pouvez d&#233;finir que la seule partie &#224; recharger est l'int&#233;rieur de la balise div qui a l'id &#8220;contenu&#8221;. Le click sur le lien provoque alors un chargement AJAX de cette balise.&lt;/p&gt; &lt;p&gt;Le probl&#232;me avec ce genre d'approche est que lorsqu'on charge la page de cette fa&#231;on, l'URL de la barre d'adresse ne change pas. Dans notre exemple, l'utilisateur qui veut partager un lien vers l'article no123 enverra alors ses amis vers votre page de sommaire. Ce plugin r&#232;gle ce probl&#232;me en utilisant l'API History fournie par les navigateurs HTML5. Pour les utilisateurs dont le navigateur ne supporte pas cette API, on a le choix entre ne pas utiliser de chargements AJAX et utiliser une astuce avec des hashes (#) dans l'url comme le font des sites comme twitter par exemple.&lt;/p&gt; &lt;p&gt;Utiliser ce plugin a plusieurs avantages :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Comme la page n'est jamais compl&#232;tement recharg&#233;e par le navigateur, la navigation est plus fluide et r&#233;active. &lt;/li&gt;&lt;li&gt; Cela permet de r&#233;duire consid&#233;rablement la quantit&#233; de donn&#233;es &#233;chang&#233;es entre votre serveur et l'utilisateur, ce qui acc&#233;l&#232;re notablement le chargement des pages et &#233;conomise la bande passante.&lt;/li&gt;&lt;li&gt; Pour certaine utilisations particuli&#232;res, comme par exemple un site de radio, cela permet un plus grand confort d'utilisation. On peut s'arranger pour ne jamais recharger la liste de lecture et les visiteurs peuvent alors changer de page sans interrompre la musique.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;http://www.spip-contrib.net/spip-info-net-Les-fonctionnalites-de-SPIP3&quot; class=&#039;spip_out&#039;&gt;Il semblerait&lt;/a&gt; qu'une fonctionnalit&#233; similaire sera disponible nativement dans SPIP3, mais en attendant, plus rien ne vous emp&#234;che de profiter des avantages de cette approche !&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Configuration&lt;/h3&gt;
&lt;p&gt;Pour fonctionner, ce plugin doit &#234;tre correctement configur&#233;. La page de configuration est accessible depuis la page des plugins, qui nous am&#232;ne au formulaire de configuration :&lt;/p&gt;
&lt;dl class=&#039;spip_document_10406 spip_documents spip_documents_center&#039;&gt;
&lt;dt&gt;&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L505xH428/ajax_nav_conf_fr-5040e.png&#039; width=&#039;505&#039; height=&#039;428&#039; alt=&#039;PNG - 52.8&#160;ko&#039; style=&#039;&#039; /&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;strong&gt;Le pr&#233;fixe des urls :&lt;/strong&gt; Ce plugin ne fonctionne qu'avec les sites qui utilisent des adresses url de type &#8220;page&#8221; (&#224; choisir dans l'onglet &#8220;Fonctions Avanc&#233;es&#8221; de la configuration du site). Il faut alors garder la valeur par d&#233;faut. Pour ceux qui utilisent un autre pr&#233;fixe, il est possible de le d&#233;finir ici.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Les types de page :&lt;/strong&gt; Ce r&#233;glage permet de sp&#233;cifier les types de liens qui seront trait&#233;s. Le r&#233;glage dans la capture d'&#233;cran ci-dessus signifie que tous les liens vers le sommaire, vers un article ou vers une rubrique seront charg&#233;s en AJAX. Par contre, les liens vers une page de mot-cl&#233; ou vers la page de login seront laiss&#233; intacts et fonctionneront comme d'habitude.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Les ids des divs &#224; charger en AJAX :&lt;/strong&gt; Le r&#233;glage de la capture d'&#233;cran signifie que les divs ayant comme id &#8220;contenu&#8221; et &#8220;spip-admin&#8221; seront recharg&#233;s en AJAX. Vous devriez toujours laisser &#8220;spip-admin&#8221; dans ce champ, puisqu'il s'agit des boutons affichant les statistiques et le bouton &#8220;recalculer&#8221; qui s'affichent lorsqu'un contributeur du site est connect&#233;.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Les ids des divs &#224; recharger en cas de changement de langue :&lt;/strong&gt; Ce r&#233;glage est utile pour les sites multilingues. Pour que ceci fonctionne correctement, il est imp&#233;ratif de placer un attribut lang &#224; la balise html.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Activer les urls hash :&lt;/strong&gt; Activez cette option si vous voulez que vos visiteurs qui utilisent des vieux navigateurs profitent aussi de la navigation AJAX. Ce choix ne devrait pas &#234;tre pris &#224; la l&#233;g&#232;re, puisqu'il induit des probl&#232;mes. Par exemple, si un de vos visiteurs sur IE7 transmet un lien &#224; quelqu'un qui a bloqu&#233; le Javascript, le lien ne l'enverra pas sur la bonne page. N'activez cette fonction que si le fonctionnement de votre site d&#233;pend fortement de la navigation AJAX, et que vous jugez que les inconv&#233;nients en valent la peine. Pour plus d'infos sur les probl&#232;mes cr&#233;es en cochant cette option sur &lt;a href=&quot;https://github.com/balupton/history.js/wiki/Intelligent-State-Handling&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;cette page&lt;/a&gt; (page en anglais).&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Effets pr&#233;- et post-chargement&lt;/h3&gt;
&lt;p&gt;Si vous souhaitez utiliser des effets Javascript pour animer les chargements AJAX, vous pouvez vous appuyer sur les &#233;v&#233;nements &#8220;onAjaxNavReq&#8221;, &#8220;onAjaxNavLoad&#8221; et &#8220;onAjaxNavLocalisedLoad&#8221;, qui sont d&#233;clench&#233;s respectivement avant un chargement, apr&#232;s un chargement normal et apr&#232;s un chargement avec changement de langue. Ces &#233;v&#233;nements sont d&#233;clench&#233;s par chacun des &#233;l&#233;ments concern&#233;s, ce qui vous permet d'assigner des effets diff&#233;rents &#224; chaque &#233;l&#233;ment.&lt;/p&gt; &lt;p&gt;Par exemple, si vous voulez un effet de fondu sur la balise avec id &#8220;contenu&#8221; lors d'un chargement, vous pouvez utiliser le code Javascript suivant :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_php cadre spip_cadre&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;#contenu&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;bind&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;onAjaxNavReq&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;#contenu&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;animate&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;opacity&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;fast&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;#contenu&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;bind&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;onAjaxNavLoad&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;#contenu&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;animate&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;opacity&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;fast&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/a66164aa6ba88b36e49cd36faa669e3c.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Ou alors, si votre menu est recharg&#233; en cas de changement de langue, et qu'il a des effets Javascript que vous avez group&#233;s dans une fonction appel&#233;e &#8220;attachMenuFx&#8221;, chaque changement de langue va abimer vos beaux effets. Dans ce cas utilisez le code suivant :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_php cadre spip_cadre&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;#menu&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;bind&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;onAjaxNavLocalisedLoad&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; attachMenuFx&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Ce plugin fait une utilisation intensive de la librairie &lt;a href=&quot;https://github.com/balupton/history.js&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;History.js&lt;/a&gt;, un grand merci &#224; son auteur ! J'ai aussi utilis&#233; la librairie Javascript &lt;a href=&quot;http://www.modernizr.com/&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;Modernizr&lt;/a&gt; et la librairie &lt;a href=&quot;https://code.google.com/p/phpquery/&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;phpQuery&lt;/a&gt;. Ces librairies sont inclues dans le plugin, donc pas besoin de vous en soucier.
&lt;br /&gt;Et &#233;videment merci &#224; toute la communaut&#233; SPIP pour ce fabuleux logiciel et sa multitude de contributions !&lt;/p&gt;&lt;/div&gt;
&lt;div class='raw_chapo'&gt;Ce plugin permet de modifier automatiquement une parties des liens internes de mani&#232;re &#224; ce qu&#039;ils ne d&#233;clenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains &#233;l&#233;ments sp&#233;cifi&#233;s &#224; l&#039;avance.&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt; Il permet aussi de sp&#233;cifier des &#233;l&#233;ments qui ne seront recharg&#233;s qu&#039;en cas de changement de langue. En clair, imaginons que nous sommes sur la page de sommaire de votre site, et qu&#039;on clique sur un lien vers l&#039;article no123. Le navigateur recharge alors la page en entier, y compris des &#233;l&#233;ments qui restent identiques, comme le pied de page ou l&#039;en-t&#234;te. Avec &#8220;Navigation AJAX&#8221;, vous pouvez d&#233;finir que la seule partie &#224; recharger est l&#039;int&#233;rieur de la balise div qui a l&#039;id &#8220;contenu&#8221;. Le click sur le lien provoque alors un chargement AJAX de cette balise. Le probl&#232;me avec ce genre d&#039;approche est que lorsqu&#039;on charge la page de cette fa&#231;on, l&#039;URL de la barre d&#039;adresse ne change pas. Dans notre exemple, l&#039;utilisateur qui veut partager un lien vers l&#039;article no123 enverra alors ses amis vers votre page de sommaire. Ce plugin r&#232;gle ce probl&#232;me en utilisant l&#039;API History fournie par les navigateurs HTML5. Pour les utilisateurs dont le navigateur ne supporte pas cette API, on a le choix entre ne pas utiliser de chargements AJAX et utiliser une astuce avec des hashes (#) dans l&#039;url comme le font des sites comme twitter par exemple. Utiliser ce plugin a plusieurs avantages : -* Comme la page n&#039;est jamais compl&#232;tement recharg&#233;e par le navigateur, la navigation est plus fluide et r&#233;active. -* Cela permet de r&#233;duire consid&#233;rablement la quantit&#233; de donn&#233;es &#233;chang&#233;es entre votre serveur et l&#039;utilisateur, ce qui acc&#233;l&#232;re notablement le chargement des pages et &#233;conomise la bande passante. -* Pour certaine utilisations particuli&#232;res, comme par exemple un site de radio, cela permet un plus grand confort d&#039;utilisation. On peut s&#039;arranger pour ne jamais recharger la liste de lecture et les visiteurs peuvent alors changer de page sans interrompre la musique. [Il semblerait-&gt;http://www.spip-contrib.net/spip-info-net-Les-fonctionnalites-de-SPIP3] qu&#039;une fonctionnalit&#233; similaire sera disponible nativement dans SPIP3, mais en attendant, plus rien ne vous emp&#234;che de profiter des avantages de cette approche ! {{{Configuration}}} Pour fonctionner, ce plugin doit &#234;tre correctement configur&#233;. La page de configuration est accessible depuis la page des plugins, qui nous am&#232;ne au formulaire de configuration : &lt;doc10406|center&gt; -* {{Le pr&#233;fixe des urls :}} Ce plugin ne fonctionne qu&#039;avec les sites qui utilisent des adresses url de type &#8220;page&#8221; (&#224; choisir dans l&#039;onglet &#8220;Fonctions Avanc&#233;es&#8221; de la configuration du site). Il faut alors garder la valeur par d&#233;faut. Pour ceux qui utilisent un autre pr&#233;fixe, il est possible de le d&#233;finir ici. -* {{Les types de page :}} Ce r&#233;glage permet de sp&#233;cifier les types de liens qui seront trait&#233;s. Le r&#233;glage dans la capture d&#039;&#233;cran ci-dessus signifie que tous les liens vers le sommaire, vers un article ou vers une rubrique seront charg&#233;s en AJAX. Par contre, les liens vers une page de mot-cl&#233; ou vers la page de login seront laiss&#233; intacts et fonctionneront comme d&#039;habitude. -* {{Les ids des divs &#224; charger en AJAX :}} Le r&#233;glage de la capture d&#039;&#233;cran signifie que les divs ayant comme id &#8220;contenu&#8221; et &#8220;spip-admin&#8221; seront recharg&#233;s en AJAX. Vous devriez toujours laisser &#8220;spip-admin&#8221; dans ce champ, puisqu&#039;il s&#039;agit des boutons affichant les statistiques et le bouton &#8220;recalculer&#8221; qui s&#039;affichent lorsqu&#039;un contributeur du site est connect&#233;. -* {{Les ids des divs &#224; recharger en cas de changement de langue :}} Ce r&#233;glage est utile pour les sites multilingues. Pour que ceci fonctionne correctement, il est imp&#233;ratif de placer un attribut lang &#224; la balise html. -* {{Activer les urls hash :}} Activez cette option si vous voulez que vos visiteurs qui utilisent des vieux navigateurs profitent aussi de la navigation AJAX. Ce choix ne devrait pas &#234;tre pris &#224; la l&#233;g&#232;re, puisqu&#039;il induit des probl&#232;mes. Par exemple, si un de vos visiteurs sur IE7 transmet un lien &#224; quelqu&#039;un qui a bloqu&#233; le Javascript, le lien ne l&#039;enverra pas sur la bonne page. N&#039;activez cette fonction que si le fonctionnement de votre site d&#233;pend fortement de la navigation AJAX, et que vous jugez que les inconv&#233;nients en valent la peine. Pour plus d&#039;infos sur les probl&#232;mes cr&#233;es en cochant cette option sur [cette page-&gt;https://github.com/balupton/history.js/wiki/Intelligent-State-Handling] (page en anglais). {{{Effets pr&#233;- et post-chargement}}} Si vous souhaitez utiliser des effets Javascript pour animer les chargements AJAX, vous pouvez vous appuyer sur les &#233;v&#233;nements &#8220;onAjaxNavReq&#8221;, &#8220;onAjaxNavLoad&#8221; et &#8220;onAjaxNavLocalisedLoad&#8221;, qui sont d&#233;clench&#233;s respectivement avant un chargement, apr&#232;s un chargement normal et apr&#232;s un chargement avec changement de langue. Ces &#233;v&#233;nements sont d&#233;clench&#233;s par chacun des &#233;l&#233;ments concern&#233;s, ce qui vous permet d&#039;assigner des effets diff&#233;rents &#224; chaque &#233;l&#233;ment. Par exemple, si vous voulez un effet de fondu sur la balise avec id &#8220;contenu&#8221; lors d&#039;un chargement, vous pouvez utiliser le code Javascript suivant : &lt;cadre class=&#039;php&#039;&gt; $(&#039;#contenu&#039;).bind(&#039;onAjaxNavReq&#039;,function () { $(&#039;#contenu&#039;).animate({opacity: 0}, &#039;fast&#039;); }); $(&#039;#contenu&#039;).bind(&#039;onAjaxNavLoad&#039;,function (){ $(&#039;#contenu&#039;).animate({opacity: 1}, &#039;fast&#039;); }); &lt;/cadre&gt; Ou alors, si votre menu est recharg&#233; en cas de changement de langue, et qu&#039;il a des effets Javascript que vous avez group&#233;s dans une fonction appel&#233;e &#8220;attachMenuFx&#8221;, chaque changement de langue va abimer vos beaux effets. Dans ce cas utilisez le code suivant : &lt;cadre class=&#039;php&#039;&gt; $(&#039;#menu&#039;).bind(&#039;onAjaxNavLocalisedLoad&#039;, attachMenuFx); &lt;/cadre&gt;&lt;/div&gt;&lt;!--.rss_texte--&gt;
		&lt;div class='raw_ps'&gt;Ce plugin fait une utilisation intensive de la librairie [History.js-&gt;https://github.com/balupton/history.js], un grand merci &#224; son auteur! J&#039;ai aussi utilis&#233; la librairie Javascript [Modernizr-&gt;http://www.modernizr.com/] et la librairie [phpQuery-&gt;https://code.google.com/p/phpquery/]. Ces librairies sont inclues dans le plugin, donc pas besoin de vous en soucier.
_ Et &#233;videment merci &#224; toute la communaut&#233; SPIP pour ce fabuleux logiciel et sa multitude de contributions!&lt;/div&gt;&lt;!--.rss_ps--&gt;

		</content:encoded>
]

		
		<enclosure url="http://files.spip.org/spip-zone/ajax_nav.zip" length="619742" type="application/zip" />
		

	</item>



	<item>
		<title>Personnalisation de la page 404 de SoyezCr&#233;ateurs</title>
		<link>http://www.spip-contrib.net/Personnalisation-de-la-page-404</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Personnalisation-de-la-page-404</guid>
		<dc:date>2012-01-31T10:56:42Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>RealET</dc:creator>

<category domain="http://www.spip-contrib.net/SoyezCreateurs,1237">SoyezCreateurs</category>

		<dc:subject>Webmestre</dc:subject>
		<dc:subject>Documentation</dc:subject>
		<dc:subject>SPIP 2.1</dc:subject>
		<dc:subject>Tutos&amp;Formation</dc:subject>

		<description>
&lt;p&gt;L'image affich&#233;e dans la page 404 de SoyezCr&#233;ateurs peut &#234;tre personnalis&#233;e. Qu'est-ce qu'une page 404 ? Il s'agit de la page qui s'affiche lorsqu'on demande &#224; voir une page qui n'existe pas dans le site. Apparence par d&#233;faut dans SoyezCr&#233;ateurs Erreur 404 de SoyezCr&#233;ateurs Le texte affich&#233; est impos&#233;. Il est le fruit de ma veille technologique sur les 404. L'objectif est de se placer du c&#244;t&#233; du visiteur, et donc, de ne surtout pas le culpabiliser, mais, au contraire, de l'accompagner en douceur. (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/SoyezCreateurs,1237" rel="directory"&gt;SoyezCreateurs&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/Webmestre" rel="tag"&gt;Webmestre&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Documentation,117" rel="tag"&gt;Documentation&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-2-1" rel="tag"&gt;SPIP 2.1&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Tutos-Formation" rel="tag"&gt;Tutos&amp;Formation&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/arton4067.png?1328003746&quot; width=&quot;128&quot; height=&quot;128&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;L'image affich&#233;e dans la page 404 de SoyezCr&#233;ateurs peut &#234;tre personnalis&#233;e.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Qu'est-ce qu'une page 404 ?&lt;/h3&gt;
&lt;p&gt;Il s'agit de la page qui s'affiche lorsqu'on demande &#224; voir une page qui n'existe pas dans le site.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Apparence par d&#233;faut dans SoyezCr&#233;ateurs&lt;/h3&gt;&lt;dl class=&#039;spip_document_10414 spip_documents spip_documents_center&#039;&gt;
&lt;dt&gt;&lt;a href=&quot;http://www.spip-contrib.net/IMG/png/erreur_404_-_soyezcreateurs.png&quot; title=&#039;PNG - 51.2&#160;ko&#039; type=&quot;image/png&quot;&gt;&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L120xH67/erreur_404_-_soyezcreateurs-b8012-66bbe.png&#039; width=&#039;120&#039; height=&#039;67&#039; alt=&#039;PNG - 51.2&#160;ko&#039; style=&#039;&#039; /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class=&#039;crayon document-titre-10414 spip_doc_titre&#039; style=&#039;width:120px;&#039;&gt;&lt;strong&gt;Erreur 404 de SoyezCr&#233;ateurs&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Le texte affich&#233; est impos&#233;. Il est le fruit de ma &lt;a href=&quot;http://delicious.com/jpyrat/404&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;veille technologique sur les 404&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;L'objectif est de se placer du c&#244;t&#233; du visiteur, et donc, de ne surtout pas le culpabiliser, mais, au contraire, de l'accompagner en douceur.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Personnalisation de l'image&lt;/h3&gt;
&lt;p&gt;Pour cela, il suffit de placer l'image que vous souhaitez dans le dossier &lt;strong&gt;squelettes/images/&lt;/strong&gt; avec comme nom : &lt;strong&gt;404.jpg&lt;/strong&gt;.&lt;/p&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;L&#039;image affich&#233;e dans la page 404 de SoyezCr&#233;ateurs peut &#234;tre personnalis&#233;e.&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;{{{Qu&#039;est-ce qu&#039;une page 404 ?}}} Il s&#039;agit de la page qui s&#039;affiche lorsqu&#039;on demande &#224; voir une page qui n&#039;existe pas dans le site. {{{Apparence par d&#233;faut dans SoyezCr&#233;ateurs}}} &lt;doc10414|center&gt; Le texte affich&#233; est impos&#233;. Il est le fruit de ma [veille technologique sur les 404-&gt;http://delicious.com/jpyrat/404]. L&#039;objectif est de se placer du c&#244;t&#233; du visiteur, et donc, de ne surtout pas le culpabiliser, mais, au contraire, de l&#039;accompagner en douceur. {{{Personnalisation de l&#039;image}}} Pour cela, il suffit de placer l&#039;image que vous souhaitez dans le dossier {{squelettes/images/}} avec comme nom : {{404.jpg}}.&lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		

	</item>



	<item>
		<title>Nouvelle version - Mod&#233;ration de modifications</title>
		<link>http://www.spip-contrib.net/Nouvelle-version-Moderation-de-modifications</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Nouvelle-version-Moderation-de-modifications</guid>
		<dc:date>2012-01-29T12:07:27Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>fwedboot</dc:creator>

<category domain="http://www.spip-contrib.net/Nouvelle-version-Moderation-de-modifications,1578">Nouvelle version - Mod&#233;ration de modifications</category>

		<dc:subject>Licence GPL</dc:subject>
		<dc:subject>Tout Public</dc:subject>
		<dc:subject>Plugins</dc:subject>
		<dc:subject>Gestion sites</dc:subject>
		<dc:subject>Aide administration</dc:subject>
		<dc:subject>SPIP 2.0</dc:subject>
		<dc:subject>Flux des plugins</dc:subject>
		<dc:subject>SPIP 2.1</dc:subject>

		<description>
&lt;p&gt;Suite &#224; une migration depuis SPIP-Agora, j'ai d&#233;velopp&#233; ce plugin permettant de reprendre la fonctionnalit&#233; &#171; Nouvelle version &#187; non reprise sur SPIP 2. Cette fonctionnalit&#233; permet de : Mod&#233;rer a priori les modifications d'un article publi&#233; en ligne Archiver la version ant&#233;rieure compl&#232;te de l'article une fois la modification valid&#233;e par un administrateur. Des r&#233;dacteurs peuvent donc modifier un article en ligne (tout le monde peut cr&#233;er une nouvelle version d'article), mais seuls des administrateurs (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Nouvelle-version-Moderation-de-modifications,1578" rel="directory"&gt;Nouvelle version - Mod&#233;ration de modifications&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/Licence-GPL" rel="tag"&gt;Licence GPL&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/+-Tout-Public-+" rel="tag"&gt;Tout Public&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Plugins,112" rel="tag"&gt;Plugins&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Sites-managment" rel="tag"&gt;Gestion sites&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Admin-tools" rel="tag"&gt;Aide administration&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-2-0,261" rel="tag"&gt;SPIP 2.0&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Plugins-pour-SPIP-2-0" rel="tag"&gt;Flux des plugins&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-2-1" rel="tag"&gt;SPIP 2.1&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/arton4024.png?1325005818&quot; width=&quot;24&quot; height=&quot;23&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Suite &#224; une migration depuis SPIP-Agora, j'ai d&#233;velopp&#233; ce plugin permettant de reprendre la fonctionnalit&#233; &#171; Nouvelle version &#187; non reprise sur SPIP 2.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Cette fonctionnalit&#233; permet de :&lt;/p&gt; &lt;p&gt;- Mod&#233;rer a priori les modifications d'un article publi&#233; en ligne
&lt;br /&gt;- Archiver la version ant&#233;rieure compl&#232;te de l'article une fois la modification valid&#233;e par un administrateur.&lt;/p&gt; &lt;p&gt;Des r&#233;dacteurs peuvent donc modifier un article en ligne (tout le monde peut cr&#233;er une nouvelle version d'article), mais seuls des administrateurs peuvent publier la version modifi&#233;e.&lt;/p&gt; &lt;p&gt;Ce plugin s'appuie sur le plugin &lt;a href=&quot;http://www.spip-contrib.net/Plugin-Duplicator&quot; class=&#039;spip_in&#039;&gt;duplicator&lt;/a&gt; pour la partie duplication d'article.&lt;/p&gt; &lt;p&gt;La partie &#171; remplacement et publication &#187; est &#233;crite ex-nihilo.&lt;/p&gt; &lt;p&gt;- Fonctionnement du plugin :&lt;/p&gt; &lt;p&gt;1. Un bouton apparait dans la zone de contr&#244;le de l'article affich&#233; avec la mention &#171; Nouvelle Version &#187;
&lt;span class=&#039;spip_document_10301 spip_documents spip_documents_center&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH240/etape-1-d1e2a.jpg&#039; width=&#039;520&#039; height=&#039;240&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;2. Un message d'alerte demande de confirmer la duplication de cet article. L'op&#233;ration est irreversible car c'est un insert en base.
&lt;span class=&#039;spip_document_10302 spip_documents spip_documents_center&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH289/etape-2-ae6ca.jpg&#039; width=&#039;520&#039; height=&#039;289&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;3. Une fois l'alerte approuv&#233;e, un message s'inscrit apr&#232;s la cr&#233;ation de la nouvelle version de l'article, et propose de se rendre sur la nouvelle version.
&lt;span class=&#039;spip_document_10303 spip_documents spip_documents_center&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH257/etape-3-90550.jpg&#039; width=&#039;520&#039; height=&#039;257&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;4. La nouvelle version est maintenant accessible et 'en cours de r&#233;daction'. On note qu'il s'agit d'un article avec un nouvel ID mais avec le contenu de l'article publi&#233;. On peut modifier tranquillement cet article sans toucher &#224; l'article en ligne. Une fois les modifications apport&#233;es et si on est administrateur avec le droit de publier sur le site, on peut choisir de &#171; Publier cette version &#187; comme le montre le nouveau bouton dans la zone de modification de statut de l'article.
&lt;span class=&#039;spip_document_10304 spip_documents spip_documents_center&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH222/etape-4-b7514.jpg&#039; width=&#039;520&#039; height=&#039;222&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;5. Une fois le bouton &#171; Publier cette version &#187; cliqu&#233;, on est pri&#233; d'en confirmer la publication :
&lt;span class=&#039;spip_document_10305 spip_documents spip_documents_center&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH257/etape-5-c4c83.jpg&#039; width=&#039;520&#039; height=&#039;257&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;6. La version en cours de r&#233;daction est publi&#233;e dans l'article en ligne. &lt;span class=&#039;spip_document_10306 spip_documents spip_documents_center&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH219/etape-6-45abf.jpg&#039; width=&#039;520&#039; height=&#039;219&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;7. En cliquant le lien vers l'article publi&#233;, on notera que l'id du message n'a pas chang&#233;, mais que les textes eux, sont &#224; jour.
La version ant&#233;rieure est mise &#224; la poubelle.
&lt;span class=&#039;spip_document_10301 spip_documents spip_documents_center&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH240/etape-1-d1e2a.jpg&#039; width=&#039;520&#039; height=&#039;240&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Le plugin est sous SVN spip-zone :
&lt;a href=&quot;http://zone.spip.org/trac/spip-zone/browser/_plugins_/nouvelle_version&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://zone.spip.org/trac/spip-zone/browser/_plugins_/nouvelle_version&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&#192; faire :&lt;/p&gt; &lt;p&gt;- Afficher la possibilit&#233; d'une nouvelle version uniquement si l'article en cours est &#171; publi&#233; &#187; ce qui n'est pas le cas aujourd'hui
&lt;br /&gt;- Faire un cfg pour ce plugin permettant de choisir le statut appliqu&#233; &#224; la version ant&#233;rieure.&lt;/p&gt;&lt;/div&gt;
&lt;div class='raw_chapo'&gt;Suite &#224; une migration depuis SPIP-Agora, j&#039;ai d&#233;velopp&#233; ce plugin permettant de reprendre la fonctionnalit&#233; &quot;Nouvelle version&quot; non reprise sur SPIP~2. &lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;Cette fonctionnalit&#233; permet de : - Mod&#233;rer a priori les modifications d&#039;un article publi&#233; en ligne - Archiver la version ant&#233;rieure compl&#232;te de l&#039;article une fois la modification valid&#233;e par un administrateur. Des r&#233;dacteurs peuvent donc modifier un article en ligne (tout le monde peut cr&#233;er une nouvelle version d&#039;article), mais seuls des administrateurs peuvent publier la version modifi&#233;e. Ce plugin s&#039;appuie sur le plugin [duplicator-&gt;art3354] pour la partie duplication d&#039;article. La partie &quot;remplacement et publication&quot; est &#233;crite ex-nihilo. - Fonctionnement du plugin: 1. Un bouton apparait dans la zone de contr&#244;le de l&#039;article affich&#233; avec la mention &quot;Nouvelle Version&quot; &lt;img10301|center&gt; 2. Un message d&#039;alerte demande de confirmer la duplication de cet article. L&#039;op&#233;ration est irreversible car c&#039;est un insert en base. &lt;img10302|center&gt; 3. Une fois l&#039;alerte approuv&#233;e, un message s&#039;inscrit apr&#232;s la cr&#233;ation de la nouvelle version de l&#039;article, et propose de se rendre sur la nouvelle version. &lt;img10303|center&gt; 4. La nouvelle version est maintenant accessible et &#039;en cours de r&#233;daction&#039;. On note qu&#039;il s&#039;agit d&#039;un article avec un nouvel ID mais avec le contenu de l&#039;article publi&#233;. On peut modifier tranquillement cet article sans toucher &#224; l&#039;article en ligne. Une fois les modifications apport&#233;es et si on est administrateur avec le droit de publier sur le site, on peut choisir de &quot;Publier cette version&quot; comme le montre le nouveau bouton dans la zone de modification de statut de l&#039;article. &lt;img10304|center&gt; 5. Une fois le bouton &quot;Publier cette version&quot; cliqu&#233;, on est pri&#233; d&#039;en confirmer la publication: &lt;img10305|center&gt; 6. La version en cours de r&#233;daction est publi&#233;e dans l&#039;article en ligne. &lt;img10306|center&gt; 7. En cliquant le lien vers l&#039;article publi&#233;, on notera que l&#039;id du message n&#039;a pas chang&#233;, mais que les textes eux, sont &#224; jour. La version ant&#233;rieure est mise &#224; la poubelle. &lt;img10301|center&gt; &lt;/div&gt;&lt;!--.rss_texte--&gt;
		&lt;div class='raw_ps'&gt;Le plugin est sous SVN spip-zone: http://zone.spip.org/trac/spip-zone/browser/_plugins_/nouvelle_version &#192; faire: - Afficher la possibilit&#233; d&#039;une nouvelle version uniquement si l&#039;article en cours est &quot;publi&#233;&quot; ce qui n&#039;est pas le cas aujourd&#039;hui - Faire un cfg pour ce plugin permettant de choisir le statut appliqu&#233; &#224; la version ant&#233;rieure.&lt;/div&gt;&lt;!--.rss_ps--&gt;

		</content:encoded>
]

		
		<enclosure url="http://files.spip.org/spip-zone/nouvelle_version.zip" length="14115" type="application/zip" />
		

	</item>



	<item>
		<title>Mon premier formulaire pas &#224; pas : c'est Formidable !</title>
		<link>http://www.spip-contrib.net/Mon-premier-formulaire-pas-a-pas-c-est-Formidable</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Mon-premier-formulaire-pas-a-pas-c-est-Formidable</guid>
		<dc:date>2012-01-23T21:36:28Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>RastaPopoulos</dc:creator>

<category domain="http://www.spip-contrib.net/Formidable">Formidable</category>

		<dc:subject>Licence GPL</dc:subject>
		<dc:subject>Documentation</dc:subject>
		<dc:subject>SPIP 2.1</dc:subject>

		<description>
&lt;p&gt;http://spip.arscenic.tv/sites/spip.arscenic.tv/IMG/mp4/formidable-encoded.mp4 Version originale sur : http://spip.arscenic.tv/medias/video-tutorials/article/formidable-mon-premier-formulaire&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Formidable" rel="directory"&gt;Formidable&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/Licence-GPL" rel="tag"&gt;Licence GPL&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Documentation,117" rel="tag"&gt;Documentation&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-2-1" rel="tag"&gt;SPIP 2.1&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon1348.png?1306451146&quot; width=&quot;128&quot; height=&quot;128&quot; /&gt;
		&lt;div class='rss_texte'&gt;&lt;div&gt;
&lt;div style=&quot;width:500px;height:280px&quot;&gt;
&lt;object type=&quot;application/x-shockwave-flash&quot; data=&quot;http://spip.arscenic.tv/extensions/html5/flash/flowplayer.swf?config=http%3A%2F%2Fspip.arscenic.tv%2Fspip.php%3Fpage%3Dflowplayer_embed.js%26id_document%3D1714&quot; width=&quot;500&quot; height=&quot;280&quot;&gt; &lt;param name=&quot;movie&quot; value=&quot;http://spip.arscenic.tv/extensions/html5/flash/flowplayer.swf?config=http%3A%2F%2Fspip.arscenic.tv%2Fspip.php%3Fpage%3Dflowplayer_embed.js%26id_document%3D1714&quot; /&gt; &lt;param name=&quot;wmode&quot; value=&quot;transparent&quot; /&gt; &lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;
&lt;span&gt;&lt;a href=&quot;http://spip.arscenic.tv/sites/spip.arscenic.tv/IMG/mp4/formidable-encoded.mp4&quot; rel=&quot;enclosure&quot;&gt;http://spip.arscenic.tv/sites/spip.arscenic.tv/IMG/mp4/formidable-encoded.mp4&lt;/a&gt;&lt;/span&gt;
&lt;/object&gt;
&lt;/div&gt; &lt;/div&gt;
&lt;p&gt;Version originale sur : &lt;a href=&quot;http://spip.arscenic.tv/medias/video-tutorials/article/formidable-mon-premier-formulaire&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;http://spip.arscenic.tv/medias/video-tutorials/article/formidable-mon-premier-formulaire&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
&lt;div class='raw_texte'&gt;&lt;div&gt;
&lt;div style=&quot;width:500px;height:280px&quot;&gt;
&lt;object type=&quot;application/x-shockwave-flash&quot; data=&quot;http://spip.arscenic.tv/extensions/html5/flash/flowplayer.swf?config=http%3A%2F%2Fspip.arscenic.tv%2Fspip.php%3Fpage%3Dflowplayer_embed.js%26id_document%3D1714&quot; width=&quot;500&quot; height=&quot;280&quot;&gt; &lt;param name=&quot;movie&quot; value=&quot;http://spip.arscenic.tv/extensions/html5/flash/flowplayer.swf?config=http%3A%2F%2Fspip.arscenic.tv%2Fspip.php%3Fpage%3Dflowplayer_embed.js%26id_document%3D1714&quot; /&gt; &lt;param name=&quot;wmode&quot; value=&quot;transparent&quot; /&gt; &lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;
&lt;span&gt;&lt;a href=&quot;http://spip.arscenic.tv/sites/spip.arscenic.tv/IMG/mp4/formidable-encoded.mp4&quot; rel=&quot;enclosure&quot;&gt;http://spip.arscenic.tv/sites/spip.arscenic.tv/IMG/mp4/formidable-encoded.mp4&lt;/a&gt;&lt;/span&gt;
&lt;/object&gt;
&lt;/div&gt; &lt;/div&gt; Version originale sur : [http://spip.arscenic.tv/medias/video-tutorials/article/formidable-mon-premier-formulaire-&gt;http://spip.arscenic.tv/medias/video-tutorials/article/formidable-mon-premier-formulaire]&lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		

	</item>



	<item>
		<title>Formidable, le g&#233;n&#233;rateur de formulaires</title>
		<link>http://www.spip-contrib.net/Formidable-le-generateur-de-formulaires</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Formidable-le-generateur-de-formulaires</guid>
		<dc:date>2012-01-23T21:00:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>RastaPopoulos</dc:creator>

<category domain="http://www.spip-contrib.net/Formidable">Formidable</category>

		<dc:subject>Licence GPL</dc:subject>
		<dc:subject>Plugins</dc:subject>
		<dc:subject>Flux des plugins</dc:subject>
		<dc:subject>SPIP 2.1</dc:subject>

		<description>
&lt;p&gt;Un g&#233;n&#233;rateur de formulaires facilement configurable pour les non-informaticiens et facilement extensible pour les d&#233;veloppeurs. Introduction L'objectif &#233;tait de cr&#233;er un plugin permettant de g&#233;n&#233;rer des formulaires. Historiquement, 2 plugins avaient d&#233;j&#224; &#233;t&#233; d&#233;velopp&#233;s pr&#233;c&#233;demment pour remplir cette fonction : Forms &amp;Tables, qui n'a pas &#233;t&#233; compl&#232;tement port&#233; pour SPIP 2. et spip-formulaire cr&#233;&#233; par artego mais qui n'est plus maintenu. La question s'est donc pos&#233;e : construire sur la base d'un des (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Formidable" rel="directory"&gt;Formidable&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/Licence-GPL" rel="tag"&gt;Licence GPL&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Plugins,112" rel="tag"&gt;Plugins&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Plugins-pour-SPIP-2-0" rel="tag"&gt;Flux des plugins&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-2-1" rel="tag"&gt;SPIP 2.1&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/arton3284.png?1265204274&quot; width=&quot;128&quot; height=&quot;128&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Un g&#233;n&#233;rateur de formulaires &lt;strong&gt;facilement configurable&lt;/strong&gt; pour les non-informaticiens et &lt;strong&gt;facilement extensible&lt;/strong&gt; pour les d&#233;veloppeurs.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Introduction&lt;/h3&gt;
&lt;p&gt;L'objectif &#233;tait de cr&#233;er un plugin permettant de g&#233;n&#233;rer des formulaires. Historiquement, 2 plugins avaient d&#233;j&#224; &#233;t&#233; d&#233;velopp&#233;s pr&#233;c&#233;demment pour remplir cette fonction :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Forms &amp;Tables, qui n'a pas &#233;t&#233; compl&#232;tement port&#233; pour SPIP 2.&lt;/li&gt;&lt;li&gt; et spip-formulaire cr&#233;&#233; par artego mais qui n'est plus maintenu.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;La question s'est donc pos&#233;e : construire sur la base d'un des deux plugins ou repartir de z&#233;ro ?
&lt;br /&gt;Form &amp;Table, tr&#232;s complet pour les utilisateurs, pr&#233;sentait l'inconv&#233;nient d'avoir un c&#244;t&#233; &#171; fourre-tout &#187; qui le rendait difficilement modifiable et difficile &#224; personnaliser par les d&#233;veloppeurs.&lt;/p&gt; &lt;p&gt;Il a finalement &#233;t&#233; d&#233;cid&#233; de repartir de z&#233;ro pour proposer quelque chose :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; de plus facile &#224; utiliser pour les utilisateurs d'une part, &lt;/li&gt;&lt;li&gt; mais aussi de plus facile &#224; personnaliser pour les d&#233;veloppeurs.
Avec le parti pris de se baser de pr&#233;f&#233;rence sur plusieurs petits plugins sp&#233;cialis&#233;s et de tirer parti de la nouvelle &lt;a href=&quot;http://programmer.spip.org/-Les-formulaires-&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;norme CVT&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Installation&lt;/h3&gt;
&lt;p&gt;Le plugin n&#233;cessite les plugins suivants :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;a href=&quot;http://www.spip-contrib.net/Urls-Rewriting-ou-Urls-propres&quot; class=&#039;spip_in&#039;&gt;Bonux&lt;/a&gt; : &lt;a href=&quot;http://files.spip.org/spip-zone/spip-bonux.zip&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;t&#233;l&#233;charger&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.spip-contrib.net/Saisies&quot; class=&#039;spip_in&#039;&gt;Saisies&lt;/a&gt; : &lt;a href=&quot;http://files.spip.org/spip-zone/saisies.zip&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;t&#233;l&#233;charger&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.spip-contrib.net/Verifier&quot; class=&#039;spip_in&#039;&gt;V&#233;rifier&lt;/a&gt; : &lt;a href=&quot;http://files.spip.org/spip-zone/verifier.zip&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;t&#233;l&#233;charger&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.spip-contrib.net/Le-plugin-YAML&quot; class=&#039;spip_in&#039;&gt;YAML&lt;/a&gt; : &lt;a href=&quot;http://files.spip.org/spip-zone/yaml.zip&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;t&#233;l&#233;charger&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.spip-contrib.net/Facteur&quot; class=&#039;spip_in&#039;&gt;Facteur&lt;/a&gt; : &lt;a href=&quot;http://files.spip.org/spip-zone/facteur.zip&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;t&#233;l&#233;charger&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Il faut installer &lt;a href=&quot;http://www.spip-contrib.net/jQuery-UI-pour-SPIP&quot; class=&#039;spip_in&#039;&gt;le plugin jQuery UI&lt;/a&gt; pour pouvoir d&#233;placer les champs &#224; la souris pendant la cr&#233;ation d'un formulaire.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Interface utilisateur&lt;/h3&gt;
&lt;p&gt;L'utilisation basique de l'interface est abord&#233;e dans ce screencast : &lt;a href=&quot;http://www.spip-contrib.net/Mon-premier-formulaire-pas-a-pas-c-est-Formidable&quot; class=&#039;spip_in&#039;&gt;Mon premier formulaire pas &#224; pas : c'est Formidable !&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Appeler mon formulaire&lt;/h3&gt;
&lt;p&gt;Vous devez appeler le formulaire ayant le nom &#171; formidable &#187;, en lui passant en param&#232;tre l'identifiant de votre formulaire.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Dans un contenu&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Utilisez le mod&#232;le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;formulaire&gt;&lt;/code&gt; classique : &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;formulaire|formidable|id=34&gt;&lt;/code&gt; ou bien &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;formulaire|formidable|id=contact&gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Dans un squelette&lt;/strong&gt;
&lt;br /&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;#FORMULAIRE_FORMIDABLE{34}&lt;/code&gt; ou bien &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;#FORMULAIRE_FORMIDABLE{contact}&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt; Pr&#233;-remplir dynamiquement les champs d'un formulaire depuis un squelette &lt;/h3&gt;
&lt;p&gt;&#192; noter que dans un squelette, vous avez la possibilit&#233; de surcharger dans l'appel, les valeurs par d&#233;faut des champs de votre formulaire. Pour cela, vous devez passer un tableau de &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;nom=&gt;valeur&lt;/code&gt; en deuxi&#232;me param&#232;tre. Vous pourrez trouver les noms de vos champs dans l'aide-m&#233;moire situ&#233; sur la page de configuration des traitements.&lt;/p&gt; &lt;p&gt;Le tableau en deuxi&#232;me param&#232;tre :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;#FORMULAIRE_FORMIDABLE{contact, #ARRAY{nom_du_champ, Ma valeur}}&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;C'est particuli&#232;rement utile pour remplir un champ cach&#233; avec une valeur &lt;i&gt;dynamique&lt;/i&gt; venant du squelette :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;#FORMULAIRE_FORMIDABLE{contact, #ARRAY{hidden_1, #ID_DOCUMENT}}&lt;/code&gt;&lt;/div&gt;&lt;h3 class=&quot;h3 spip&quot;&gt; Champs oui-non et case unique &lt;/h3&gt;
&lt;p&gt;Pour rendre obligatoire la r&#233;ponse &#171; oui &#187; &#224; un champ de type oui-non ou case unique (pour la validation de conditions d'utilisation par exemple), il faut simplement rendre le champ obligatoire.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Courriels de notification &lt;/h3&gt;
&lt;p&gt;Une option des traitements propos&#233;s permet d'envoyer un mail de notification automatiquement, &#224; chaque saisie d'un formulaire.&lt;/p&gt; &lt;p&gt;Le squelette par d&#233;faut employ&#233; pour la mise en forme de ces mails est &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;plugins/formidable/notifications/formulaire_email.html&lt;/code&gt;. Vous pouvez le copier dans le r&#233;pertoire 'notifications' de votre squelette et l'y modifier &#224; votre guise. Cette modification vaudra pour &lt;strong&gt;tous&lt;/strong&gt; les formulaires.&lt;/p&gt; &lt;p&gt;Pour utiliser un squelette sp&#233;cifique pour les mails de notification de l'un seulement des formulaires d&#233;finis avec Formidable, il suffit d'ajouter son squelette dans le r&#233;pertoire 'notifications' de votre dossier squelettes, mais en ajoutant l'identifiant.&lt;/p&gt; &lt;p&gt;IDENTIFIANT &#233;tant l'identifiant du formulaire d&#233;fini dans Formidable, les squelettes doivent se nommer :
&lt;br /&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;formulaire_IDENTIFIANT_email.html&lt;/code&gt; pour le mail aux destinataires
&lt;br /&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;formulaire_IDENTIFIANT_accuse.html&lt;/code&gt; pour l'accus&#233; de r&#233;ception du visiteur&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Voir aussi sur le wiki &lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.spip-contrib.net/todoFormidable&quot; class=&#039;spip_in&#039;&gt;todoFormidable&lt;/a&gt; | &lt;a href=&quot;http://www.spip-contrib.net/Formidable-Presentation-aux-Grottes-2010&quot; class=&#039;spip_in&#039;&gt;Formidable, pr&#233;sentation aux Grottes (2010)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;Un g&#233;n&#233;rateur de formulaires {{facilement configurable}} pour les non-informaticiens et {{facilement extensible}} pour les d&#233;veloppeurs.&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;{{{Introduction}}} L&#039;objectif &#233;tait de cr&#233;er un plugin permettant de g&#233;n&#233;rer des formulaires. Historiquement, 2 plugins avaient d&#233;j&#224; &#233;t&#233; d&#233;velopp&#233;s pr&#233;c&#233;demment pour remplir cette fonction:
-* Forms &amp;Tables, qui n&#039;a pas &#233;t&#233; compl&#232;tement port&#233; pour SPIP 2.
-* et spip-formulaire cr&#233;&#233; par artego mais qui n&#039;est plus maintenu. La question s&#039;est donc pos&#233;e : construire sur la base d&#039;un des deux plugins ou repartir de z&#233;ro ?
_ Form &amp;Table, tr&#232;s complet pour les utilisateurs, pr&#233;sentait l&#039;inconv&#233;nient d&#039;avoir un c&#244;t&#233; &quot;fourre-tout&quot; qui le rendait difficilement modifiable et difficile &#224; personnaliser par les d&#233;veloppeurs. Il a finalement &#233;t&#233; d&#233;cid&#233; de repartir de z&#233;ro pour proposer quelque chose:
-* de plus facile &#224; utiliser pour les utilisateurs d&#039;une part, -* mais aussi de plus facile &#224; personnaliser pour les d&#233;veloppeurs.
Avec le parti pris de se baser de pr&#233;f&#233;rence sur plusieurs petits plugins sp&#233;cialis&#233;s et de tirer parti de la nouvelle [norme CVT-&gt;http://programmer.spip.org/-Les-formulaires-]. {{{Installation}}} Le plugin n&#233;cessite les plugins suivants :
-* [Bonux-&gt;art1146] : [t&#233;l&#233;charger-&gt;http://files.spip.org/spip-zone/spip-bonux.zip]
-* [Saisies-&gt;art3364] : [t&#233;l&#233;charger-&gt;http://files.spip.org/spip-zone/saisies.zip]
-* [V&#233;rifier-&gt;3852] : [t&#233;l&#233;charger-&gt;http://files.spip.org/spip-zone/verifier.zip]
-* [YAML-&gt;3666] : [t&#233;l&#233;charger-&gt;http://files.spip.org/spip-zone/yaml.zip]
-* [Facteur-&gt;art3371] : [t&#233;l&#233;charger-&gt;http://files.spip.org/spip-zone/facteur.zip] Il faut installer [le plugin jQuery UI-&gt;3612] pour pouvoir d&#233;placer les champs &#224; la souris pendant la cr&#233;ation d&#039;un formulaire. {{{Interface utilisateur}}}
L&#039;utilisation basique de l&#039;interface est abord&#233;e dans ce screencast : [-&gt;3854] {{{Appeler mon formulaire}}}
Vous devez appeler le formulaire ayant le nom &quot;formidable&quot;, en lui passant en param&#232;tre l&#039;identifiant de votre formulaire. {{Dans un contenu}} _ Utilisez le mod&#232;le &lt;code&gt;&lt;formulaire&gt;&lt;/code&gt; classique : &lt;code&gt;&lt;formulaire|formidable|id=34&gt;&lt;/code&gt; ou bien &lt;code&gt;&lt;formulaire|formidable|id=contact&gt;&lt;/code&gt; {{Dans un squelette}}
_ &lt;code&gt;#FORMULAIRE_FORMIDABLE{34}&lt;/code&gt; ou bien &lt;code&gt;#FORMULAIRE_FORMIDABLE{contact}&lt;/code&gt; {{{ Pr&#233;-remplir dynamiquement les champs d&#039;un formulaire depuis un squelette }}}
&#192; noter que dans un squelette, vous avez la possibilit&#233; de surcharger dans l&#039;appel, les valeurs par d&#233;faut des champs de votre formulaire. Pour cela, vous devez passer un tableau de &lt;code&gt;nom=&gt;valeur&lt;/code&gt; en deuxi&#232;me param&#232;tre. Vous pourrez trouver les noms de vos champs dans l&#039;aide-m&#233;moire situ&#233; sur la page de configuration des traitements. _ Le tableau en deuxi&#232;me param&#232;tre :
&lt;code&gt;#FORMULAIRE_FORMIDABLE{contact, #ARRAY{nom_du_champ, Ma valeur}}
&lt;/code&gt; C&#039;est particuli&#232;rement utile pour remplir un champ cach&#233; avec une valeur {dynamique} venant du squelette :
&lt;code&gt;#FORMULAIRE_FORMIDABLE{contact, #ARRAY{hidden_1, #ID_DOCUMENT}}
&lt;/code&gt; {{{ Champs oui-non et case unique }}} Pour rendre obligatoire la r&#233;ponse &quot;oui&quot; &#224; un champ de type oui-non ou case unique (pour la validation de conditions d&#039;utilisation par exemple), il faut simplement rendre le champ obligatoire. {{{Courriels de notification }}} Une option des traitements propos&#233;s permet d&#039;envoyer un mail de notification automatiquement, &#224; chaque saisie d&#039;un formulaire. Le squelette par d&#233;faut employ&#233; pour la mise en forme de ces mails est &lt;code&gt;plugins/formidable/notifications/formulaire_email.html&lt;/code&gt;. Vous pouvez le copier dans le r&#233;pertoire &#039;notifications&#039; de votre squelette et l&#039;y modifier &#224; votre guise. Cette modification vaudra pour {{tous}} les formulaires. Pour utiliser un squelette sp&#233;cifique pour les mails de notification de l&#039;un seulement des formulaires d&#233;finis avec Formidable, il suffit d'ajouter son squelette dans le r&#233;pertoire &#039;notifications&#039; de votre dossier squelettes, mais en ajoutant l&#039;identifiant. IDENTIFIANT &#233;tant l'identifiant du formulaire d&#233;fini dans Formidable, les squelettes doivent se nommer :
_ &lt;code&gt;formulaire_IDENTIFIANT_email.html&lt;/code&gt; pour le mail aux destinataires
_ &lt;code&gt;formulaire_IDENTIFIANT_accuse.html&lt;/code&gt; pour l&#039;accus&#233; de r&#233;ception du visiteur {{{Voir aussi sur le wiki }}}
[todoFormidable-&gt;3754] | [Formidable, pr&#233;sentation aux Grottes (2010) -&gt;3755]&lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		
		<enclosure url="http://files.spip.org/spip-zone/formidable.zip" length="119959" type="application/zip" />
		

	</item>



	<item>
		<title>R&#233;f&#233;rence de ZipTeX</title>
		<link>http://www.spip-contrib.net/Reference-de-ZipTeX</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Reference-de-ZipTeX</guid>
		<dc:date>2012-01-22T14:44:36Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>

<category domain="http://www.spip-contrib.net/ZipTeX">ZipTeX</category>

		<dc:subject>Hors sommaire</dc:subject>
		<dc:subject>SPIP 3.0</dc:subject>

		<description>
&lt;p&gt;Cet articles est la documentation technique du plugin ZipTeX, qui permet de mettre dans un m&#234;me zip plusieurs fichiers .tex. Il sert dans les projets de fabrication d'un livre &#224; partir d'une base de donn&#233;e SPIP. On se reportera au tutoriel pour une premi&#232;re approche. On consultera aussi la documentation sur la balise #ARRAY, qui est beaucoup utilis&#233;e dans ziptex. &#192; chaque fois que nous parlerons de chemin, sauf si nous pr&#233;cisons &#171; &#224; l'int&#233;rieur de ziptex, la notion de chemin s'entend au sens SPIP. (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/ZipTeX" rel="directory"&gt;ZipTeX&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/+-Hors-sommaire-+" rel="tag"&gt;Hors sommaire&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-3-0" rel="tag"&gt;SPIP 3.0&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon1568.png?1326819038&quot; width=&quot;800&quot; height=&quot;800&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Cet articles est la documentation technique du plugin ZipTeX, qui permet de mettre dans un m&#234;me zip plusieurs fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;. Il sert dans les projets de &lt;a href=&quot;http://www.spip-contrib.net/Livre-avec-SPIP&quot; class=&#039;spip_in&#039;&gt;fabrication d'un livre &#224; partir d'une base de donn&#233;e SPIP&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;On se reportera &lt;a href=&quot;http://www.spip-contrib.net/Tutoriel-produire-sa-propre-structure-de-livre&quot; class=&#039;spip_in&#039;&gt;au tutoriel&lt;/a&gt; pour une premi&#232;re approche.&lt;/p&gt; &lt;p&gt;On consultera aussi &lt;a href=&quot;http://www.spip.net/fr_article4009.html&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;la documentation sur la balise #ARRAY&lt;/a&gt;, qui est beaucoup utilis&#233;e dans ziptex.&lt;/p&gt; &lt;p&gt;&#192; chaque fois que nous parlerons de chemin, sauf si nous pr&#233;cisons &#171; &#224; l'int&#233;rieur de &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;ziptex&lt;/code&gt;, &lt;a href=&quot;http://programmer.spip.org/La-notion-de-chemin&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;la notion de chemin s'entend au sens SPIP&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Rappelons aussi que ce plugin n&#233;cessite le &lt;a href=&quot;http://www.spip-contrib.net/Zippeur&quot; class=&#039;spip_in&#039;&gt;plugin zippeur&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Le filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|ziptex_zipper&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;C'est le filtre de base. Il zippe le dossier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;local/ziptex&lt;/code&gt; et retourne l'url du Zip.&lt;/p&gt; &lt;p&gt;Mais avant de zipper, le filtre peut ajouter du contenu dans le dossier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;local/ziptex&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Pour ce faire, il re&#231;oit un tableau, g&#233;n&#233;r&#233; via #ARRAY, dont la structure est la suivante :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; 0. Un tableau contenant les .tex direct, c'est &#224; dire sans code SPIP dedans, avec &#224; chaque fois :&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; 0. Chemin du fichier .tex dans l'arborescence SPIP&lt;/li&gt;&lt;li&gt; 1. Chemin du fichier .tex dans le future ZIP&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; 1. Un tableau contenant les squelettes qui g&#233;n&#233;reront du latex avec &#224; chaque fois :&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; 0. Chemin du squelette, sans le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.html&lt;/code&gt;&lt;/li&gt;&lt;li&gt; 1. Chemin du .tex correspondant, avec le .tex&lt;/li&gt;&lt;li&gt; 2. Option du squelette&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Il retourne le chemin du zip.
Exemple : g&#233;n&#233;rer un zip contenant :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Un &lt;a href=&quot;http://geekographie.maieul.net/Introduction-a-Latexmk-pour&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;fichier de configuration pour latexmk&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; Un fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;principal.tex&lt;/code&gt; g&#233;n&#233;r&#233; &#224; partir du squelette &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;principal.tex.html&lt;/code&gt;, recevant l'id_rubrique courant.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#SET&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;tableau,&lt;br /&gt; &lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;&quot;&gt;0&lt;/span&gt;,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;&quot;&gt;0&lt;/span&gt;,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;span style=&quot;&quot;&gt;0&lt;/span&gt;,latexmk,&lt;span style=&quot;&quot;&gt;1&lt;/span&gt;,latexmk&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;,&lt;br /&gt; &lt;span style=&quot;&quot;&gt;1&lt;/span&gt;,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;&quot;&gt;0&lt;/span&gt;,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;&quot;&gt;0&lt;/span&gt;,principal.tex,&lt;br /&gt; &lt;span style=&quot;&quot;&gt;1&lt;/span&gt;,principal.tex,&lt;br /&gt; &lt;span style=&quot;&quot;&gt;2&lt;/span&gt;,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_rubrique,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ID_RUBRIQUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#GET&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;tableau&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_zipper&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/75524531fc5f77e0f73e4cf8ddc8aed8.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Le filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|ziptex_creer_tex&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Produit &#224; partir du squelette un fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; dans le dossier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;ziptex&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;S'applique sur le nom du squelette (sans le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.html&lt;/code&gt;), le premier argurment est le chemin du fichier &#224; produire dans &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;ziptex&lt;/code&gt;, le second est un tableau des arguments &#224; passer au squelette.&lt;/p&gt; &lt;p&gt;Exemple :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#REM&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;Cr&#233;er un fichier articlexxx.tex depuis le squelette article.tex, en fournissant l&#039;id_article&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
&lt;BOUCLE_articles&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ARTICLES&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#VAL&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;article.tex&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_creer_tex&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;inclure/article&lt;span style=&quot;color: #CA5200;&quot;&gt;#ID_ARTICLE&lt;/span&gt;.tex,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_article,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ID_ARTICLE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;/BOUCLE_articles&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/32bfa34507a0cd62776c16d35e755afe.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Le filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|ziptex_dir&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Il s'applique sur un tableau g&#233;n&#233;r&#233; via #ARRAY. Il cr&#233;e dans le dossier ziptex des sous r&#233;pertoires.&lt;/p&gt; &lt;p&gt;Exemple :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#REM&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; Cr&#233;er des dossiers inclure et img&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#SET&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;rep,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;0,inclure,1,img&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#GET&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;rep&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_dir&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/8f96b30b949e2ad151f2aa15f2a528d1.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Le filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|ziptex_copier_tex&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Copie un fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; dans le dossier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;ziptex&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Exemple :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#REM&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;Copier le fichier principal.tex dans ziptex&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#VAL&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;principal.tex&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_copier_tex&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;principal.tex&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/a2151491f0d4a5b142ed0c3c07ab0937.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Le filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;ziptex_copier_img&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Il est &#224; utiliser dans les mod&#232;les d'insertion des images.&lt;/p&gt; &lt;p&gt;Ce filtre re&#231;oit le chemin d'une image, mais le chemin absolue, pas au sens SPIP.&lt;/p&gt; &lt;p&gt;Si l'image est un &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.gif&lt;/code&gt;, il le convertit en &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.png&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Il copie ensuite l'image dans le dossier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;ziptex/IMG&lt;/code&gt; et retourne ensuite le nom du fichier dans le dossier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;IMG&lt;/code&gt;, pr&#233;c&#233;d&#233; de &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;#IMG&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Exemple : dans un modeles d'insertion d'image, on r&#233;duit d'abord l'image &#224; 200 px de large, puis on copie dans &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;ziptex/img&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span style=&quot;color: #222;&quot;&gt;&lt;BOUCLE_img&lt;span style=&quot;color: #527EE0;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DOCUMENTS&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_document=&lt;span style=&quot;color: #CA5200;&quot;&gt;#ENV&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;
\includegraphics&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#URL_DOCUMENT&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|image_reduire&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;span style=&quot;&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|extraire_attribut&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;src&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_copier_img&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;/BOUCLE_img&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/4a01b3081248df73805578aa8bdac7a6.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Le filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;ziptex_polyglossia&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Il permet de convertir un code de langue fournit par SPIP via la balise &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;#LANG&lt;/code&gt; en code de langue du package XeLaTeX polyglossia.&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#LANG&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_polyglossia&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Pour le moment, sont int&#233;gr&#233;s :
&lt;br /&gt;- l'espagnol
&lt;br /&gt;- l'anglais
&lt;br /&gt;- le fran&#231;ais&lt;/p&gt; &lt;p&gt;Pour ajouter une nouvelle langue :
&lt;br /&gt;- soit faire la modification directement sur la zone
&lt;br /&gt;- soit me demander de le faire&lt;/p&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;Cet articles est la documentation technique du plugin ZipTeX, qui permet de mettre dans un m&#234;me zip plusieurs fichiers &lt;code&gt;.tex&lt;/code&gt;. Il sert dans les projets de [fabrication d&#039;un livre &#224; partir d&#039;une base de donn&#233;e SPIP-&gt;rub1568]. On se reportera [au tutoriel-&gt;4045] pour une premi&#232;re approche. On consultera aussi [la documentation sur la balise #ARRAY-&gt;http://www.spip.net/fr_article4009.html], qui est beaucoup utilis&#233;e dans ziptex. &#192; chaque fois que nous parlerons de chemin, sauf si nous pr&#233;cisons &#171; &#224; l&#039;int&#233;rieur de &lt;code&gt;ziptex&lt;/code&gt;, [la notion de chemin s&#039;entend au sens SPIP-&gt;http://programmer.spip.org/La-notion-de-chemin]. Rappelons aussi que ce plugin n&#233;cessite le [plugin zippeur-&gt;3576]&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;{{{Le filtre &lt;code&gt;|ziptex_zipper&lt;/code&gt;}}} C&#039;est le filtre de base. Il zippe le dossier &lt;code&gt;local/ziptex&lt;/code&gt; et retourne l&#039;url du Zip. Mais avant de zipper, le filtre peut ajouter du contenu dans le dossier &lt;code&gt;local/ziptex&lt;/code&gt;. Pour ce faire, il re&#231;oit un tableau, g&#233;n&#233;r&#233; via #ARRAY, dont la structure est la suivante : -* 0. Un tableau contenant les .tex direct, c&#039;est &#224; dire sans code SPIP dedans, avec &#224; chaque fois : -** 0. Chemin du fichier .tex dans l&#039;arborescence SPIP -** 1. Chemin du fichier .tex dans le future ZIP -* 1. Un tableau contenant les squelettes qui g&#233;n&#233;reront du latex avec &#224; chaque fois : -** 0. Chemin du squelette, sans le &lt;code&gt;.html&lt;/code&gt; -** 1. Chemin du .tex correspondant, avec le .tex -** 2. Option du squelette Il retourne le chemin du zip. Exemple : g&#233;n&#233;rer un zip contenant : -* Un [fichier de configuration pour latexmk-&gt;http://geekographie.maieul.net/Introduction-a-Latexmk-pour]. -* Un fichier &lt;code&gt;principal.tex&lt;/code&gt; g&#233;n&#233;r&#233; &#224; partir du squelette &lt;code&gt;principal.tex.html&lt;/code&gt;, recevant l&#039;id_rubrique courant. &lt;code class=&#039;spip&#039;&gt; #SET{tableau, #ARRAY{ 0,#ARRAY{ 0,#ARRAY{0,latexmk,1,latexmk} }, 1,#ARRAY{ 0,#ARRAY{ 0,principal.tex, 1,principal.tex, 2,#ARRAY{id_rubrique,#ID_RUBRIQUE} } } } } [(#GET{tableau}|ziptex_zipper)] &lt;/code&gt; {{{Le filtre &lt;code&gt;|ziptex_creer_tex&lt;/code&gt;}}} Produit &#224; partir du squelette un fichier &lt;code&gt;.tex&lt;/code&gt; dans le dossier &lt;code&gt;ziptex&lt;/code&gt;. S&#039;applique sur le nom du squelette (sans le &lt;code&gt;.html&lt;/code&gt;), le premier argurment est le chemin du fichier &#224; produire dans &lt;code&gt;ziptex&lt;/code&gt;, le second est un tableau des arguments &#224; passer au squelette. Exemple : &lt;code class=&#039;spip&#039;&gt; [(#REM)Cr&#233;er un fichier articlexxx.tex depuis le squelette article.tex, en fournissant l&#039;id_article] &lt;BOUCLE_articles(ARTICLES) [(#VAL{article.tex}|ziptex_creer_tex{inclure/article#ID_ARTICLE.tex,#ARRAY{id_article,#ID_ARTICLE}})] &lt;/BOUCLE_articles&gt; &lt;/code&gt; {{{Le filtre &lt;code&gt;|ziptex_dir&lt;/code&gt;}}} Il s&#039;applique sur un tableau g&#233;n&#233;r&#233; via #ARRAY. Il cr&#233;e dans le dossier ziptex des sous r&#233;pertoires. Exemple : &lt;code class=&quot;spip&quot;&gt; [(#REM) Cr&#233;er des dossiers inclure et img] [(#SET{rep,#ARRAY{0,inclure,1,img}})] [(#GET{rep}|ziptex_dir)] &lt;/code&gt; {{{Le filtre &lt;code&gt;|ziptex_copier_tex&lt;/code&gt;}}} Copie un fichier &lt;code&gt;.tex&lt;/code&gt; dans le dossier &lt;code&gt;ziptex&lt;/code&gt;. Exemple : &lt;code class=&#039;spip&#039;&gt; [(#REM)Copier le fichier principal.tex dans ziptex] [(#VAL{principal.tex}|ziptex_copier_tex{principal.tex})] &lt;/code&gt; {{{Le filtre &lt;code&gt;ziptex_copier_img&lt;/code&gt;}}} Il est &#224; utiliser dans les mod&#232;les d&#039;insertion des images. Ce filtre re&#231;oit le chemin d&#039;une image, mais le chemin absolue, pas au sens SPIP. Si l&#039;image est un &lt;code&gt;.gif&lt;/code&gt;, il le convertit en &lt;code&gt;.png&lt;/code&gt;. Il copie ensuite l&#039;image dans le dossier &lt;code&gt;ziptex/IMG&lt;/code&gt; et retourne ensuite le nom du fichier dans le dossier &lt;code&gt;IMG&lt;/code&gt;, pr&#233;c&#233;d&#233; de &lt;code&gt;#IMG&lt;/code&gt;. Exemple : dans un modeles d&#039;insertion d&#039;image, on r&#233;duit d&#039;abord l&#039;image &#224; 200 px de large, puis on copie dans &lt;code&gt;ziptex/img&lt;/code&gt;. &lt;code class=&#039;spip&#039;&gt; &lt;BOUCLE_img(DOCUMENTS){id_document=#ENV{id}}&gt; \includegraphics{[(#URL_DOCUMENT|image_reduire{200}|extraire_attribut{src}|ziptex_copier_img)]} &lt;/BOUCLE_img&gt; &lt;/code&gt; {{{Le filtre &lt;code&gt;ziptex_polyglossia&lt;/code&gt;}}} Il permet de convertir un code de langue fournit par SPIP via la balise &lt;code&gt;#LANG&lt;/code&gt; en code de langue du package XeLaTeX polyglossia. &lt;code class=&#039;spip&#039;&gt; [(#LANG|ziptex_polyglossia)] &lt;/code&gt; Pour le moment, sont int&#233;gr&#233;s : - l&#039;espagnol - l&#039;anglais - le fran&#231;ais Pour ajouter une nouvelle langue : - soit faire la modification directement sur la zone - soit me demander de le faire&lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		

	</item>



	<item>
		<title>R&#233;f&#233;rence de LaTeXWheel</title>
		<link>http://www.spip-contrib.net/Reference-de-LaTeXWheel</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Reference-de-LaTeXWheel</guid>
		<dc:date>2012-01-21T20:46:19Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>

<category domain="http://www.spip-contrib.net/LaTeXWheel">LaTeXWheel</category>

		<dc:subject>Hors sommaire</dc:subject>
		<dc:subject>SPIP 3.0</dc:subject>

		<description>
&lt;p&gt;LaTeXWheel est le plugin qui permet de convertir des raccourcis SPIP en code LaTeX. Il fonctionne gr&#226;ce &#224; textwheel, g&#233;n&#233;ralement en conjonction avec ZipTeX. Cet article liste : les transformations de LaTeXWheel les packages LaTeX n&#233;c&#233;ssaire pour chaque outils. On consultera le tutoriel pour une premi&#232;re approche. Les fonctions de base La fonction de base est la fonction |propre_latex. Elle s'applique sur un champ brut, c'est &#224; dire suivi d'une *. (#CHAMP* Si on utilise le syst&#232;me de (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/LaTeXWheel" rel="directory"&gt;LaTeXWheel&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/+-Hors-sommaire-+" rel="tag"&gt;Hors sommaire&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-3-0" rel="tag"&gt;SPIP 3.0&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon1568.png?1326819038&quot; width=&quot;800&quot; height=&quot;800&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;LaTeXWheel est le plugin qui permet de convertir des raccourcis SPIP en code LaTeX.&lt;/p&gt; &lt;p&gt;Il fonctionne gr&#226;ce &#224; &lt;a href=&quot;http://zzz.rezo.net/Presentation-de-Textwheel.html&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;textwheel&lt;/a&gt;, g&#233;n&#233;ralement en conjonction avec ZipTeX.&lt;/p&gt; &lt;p&gt;Cet article liste :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; les transformations de LaTeXWheel&lt;/li&gt;&lt;li&gt; les packages LaTeX n&#233;c&#233;ssaire pour chaque outils.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;http://www.spip-contrib.net/Tutoriel-produire-sa-propre-structure-de-livre&quot; class=&#039;spip_in&#039;&gt;On consultera le tutoriel pour une premi&#232;re approche&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Les fonctions de base&lt;/h3&gt;
&lt;p&gt;La fonction de base est la fonction &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|propre_latex&lt;/code&gt;. Elle s'applique sur un champ brut, c'est &#224; dire suivi d'une &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;*&lt;/code&gt;&lt;span class=&quot;spip_note_ref&quot;&gt; [&lt;a href=&#039;#nb1&#039; class=&#039;spip_note&#039; rel=&#039;footnote&#039; title=&#039;On relira la documentation sur les balise &#233;toil&#233;es.&#039; id=&#039;nh1&#039;&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#CHAMP&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|propre_latex&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Si on utilise le syst&#232;me de langue avec &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;multi&gt;&lt;/code&gt;, il faut appliquer au pr&#233;alable le filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;extraire_multi&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#CHAMP&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|extraire_multi&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#LANG&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|propre_latex&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Les raccourcis qui ne demandent pas de package suppl&#233;mentaire&lt;/h3&gt;
&lt;p&gt;Les caract&#232;res suivants : &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\$%&amp;_#&lt;/code&gt; qui ont une signification particuli&#232;re en LaTeX sont automatiquement prot&#233;g&#233;s en &#233;tant pr&#233;c&#233;d&#233;s de &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;{texte en emphase}&lt;/code&gt; donne &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\emph{texte en emphase}&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;{{texte en gras}}&lt;/code&gt; donne &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\textbf{texte en gras}&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;{{{intertitre}}}&lt;/code&gt; donne &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\subsection{intertitre}&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;[[Note de bas page]]&lt;/code&gt; donne &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\footnote{Note de bas de page}&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;quote&gt;texte cit&#233;&lt;/quote&gt;&lt;/code&gt; produit &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\begin{quotation}texte cit&#233;\end{quotation}&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Les raccourcis du type :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;- x&lt;br /&gt;
- x&lt;br /&gt;
- x&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;ne sont pas encore trait&#233;s.&lt;/p&gt; &lt;p&gt;En revanche :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;-* &#233;l&#233;ment non num&#233;rot&#233;&lt;br /&gt;
-* &#233;l&#233;ment non num&#233;rot&#233;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;produit&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;\begin{itemize}&lt;br /&gt;
\item &#233;l&#233;ment num&#233;rot&#233;&lt;br /&gt;
\item &#233;l&#233;ment num&#233;rot&#233;&lt;br /&gt;
\end{itemize}&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;On consultera aussi un article de B&#233;bert pour &lt;a href=&quot;http://bertrandmasson.free.fr/index.php?article5/dompter-ses-puces&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;faire des styles persos de listes &#224; puce en LaTeX&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;De m&#234;me :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;-# &#233;l&#233;ment num&#233;rot&#233;&lt;br /&gt;
-# &#233;l&#233;ment num&#233;rot&#233;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;produit&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_latex code&quot;&gt;&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\begin&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;enumerate&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Citem&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;item&lt;/span&gt;&lt;/a&gt; &#233;l&#233;ment num&#233;rot&#233;&lt;br /&gt;
&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Citem&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;item&lt;/span&gt;&lt;/a&gt; &#233;l&#233;ment num&#233;rot&#233;&lt;br /&gt;
&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\end&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;enumerate&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/6603bdc6f9f3c981fc9fb4fa9bf964d8.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Pour rappel en LaTeX, en standard, on ne peut pas imbriquer plus de quatre niveaux de listes&lt;span class=&quot;spip_note_ref&quot;&gt; [&lt;a href=&#039;#nb2&#039; class=&#039;spip_note&#039; rel=&#039;footnote&#039; title=&#039;Je cherche encore un package permettant de le faire.&#039; id=&#039;nh2&#039;&gt;2&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Les liens externes&lt;/h3&gt;
&lt;p&gt;Il est n&#233;cessaire d'utiliser le package hyperref.&lt;/p&gt; &lt;p&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;[-&gt;http://url.com]&lt;/code&gt; produit &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\url{http://url.com}&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;[lien externe-&gt;http://url.com]&lt;/code&gt; produit &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\href{http://url.com}{lien externe}&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Les liens internes&lt;/h3&gt;
&lt;p&gt;Pour mettre des liens internes, il est n&#233;cessaire d'ins&#233;rer des &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\label&lt;/code&gt; correspondant &#224; l'endroit vers lequel un liens veut pointer.&lt;/p&gt; &lt;p&gt;On relira d'abord une introduction &lt;a href=&quot;http://www.tuteurs.ens.fr/logiciels/latex/references.html&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;aux r&#233;f&#233;rences crois&#233;es en LaTeX&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Par exemple :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span style=&quot;color: #222;&quot;&gt;&lt;BOUCLE_articles&lt;span style=&quot;color: #527EE0;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ARTICLES&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;
\chapter&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#TITRE&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|propre_latex&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;\label&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;art&lt;span style=&quot;color: #CA5200;&quot;&gt;#ID_ARTICLE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;/BOUCLE_articles&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/5d7eadf29ee9a89cc5a59fb02b7539cd.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Pour rappel, il existe trois commandes qui permettent de se servir d'une r&#233;f&#233;rence crois&#233;e :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\ref&lt;/code&gt; renvoie au num&#233;ro de la r&#233;f&#233;rence.&lt;/li&gt;&lt;li&gt; &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\pageref&lt;/code&gt; renvoie &#224; la page de la r&#233;f&#233;rence.&lt;/li&gt;&lt;li&gt; &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\nameref&lt;/code&gt;, du package &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;hyperref&lt;/code&gt;, donne le titre de l'&#233;l&#233;ment sur lequel on renvoie.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Voici comment LaTeXwheel transforme les raccourcis :&lt;/p&gt; &lt;p&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;[texte-&gt;xxx]&lt;/code&gt; donne &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;texte (p.~\pageref{artxxx})&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;[texte-&gt;artxxx]&lt;/code&gt; donne &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;texte (p.~\pageref{artxxx})&lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;[-&gt;artxxx]&lt;/code&gt; donne &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\nameref{artxxx} (p.~\pageref{artxxx})&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Par d&#233;faut, les abr&#233;viations de type &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;art&lt;/code&gt;,&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;rub&lt;/code&gt;,sont conserv&#233;s.&lt;/p&gt; &lt;p&gt;En revanche &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;articlexxx&lt;/code&gt; donne &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;artxxx&lt;/code&gt; et &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;rubriquexxx&lt;/code&gt; donne &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;rubxxx&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;En revanche &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;motxxx&lt;/code&gt; ou &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;autxxx&lt;/code&gt; reste tel que, simplement mis dans la commande LaTeX.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Les tableaux&lt;/h3&gt;
&lt;p&gt;Gros morceaux. Je ne rentrerais pas dans les d&#233;tails, car pour avoir des tableaux correspondant aux styles voulus, il faut mettre la main &#171; dans le camboui &#187; une fois le fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; produit.&lt;/p&gt; &lt;p&gt;Je renvoie aux &lt;a href=&quot;http://bertrandmasson.free.fr/index.php?categorie4/latex-tableau&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;fiches de B&#233;bert sur les tableaux&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Sachons juste les r&#233;glages par d&#233;faut :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; les tableaux sont de type &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;longtable&lt;/code&gt;, donc n&#233;c&#233;ssitent le package du m&#234;me nom.&lt;/li&gt;&lt;li&gt; la largeur des colonnes correspond &#224; la largeur &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\textwidth&lt;/code&gt;, c'est &#224; dire la largeur du texte, divis&#233; par le nombre de colonnes. Les colonnes sont de type &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;p&lt;/code&gt;&lt;/li&gt;&lt;li&gt; il n'y a pas de traits.&lt;/li&gt;&lt;li&gt; le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\endhead&lt;/code&gt; est g&#233;r&#233; pour les ent&#234;tes.&lt;/li&gt;&lt;li&gt; les colonnes et les lignes peuvent &#234;tre fusionn&#233;s. Le cas &#233;ch&#233;ant, il faut utiliser le package &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\multirow&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Le mod&#232;les&lt;/h3&gt;
&lt;p&gt;Il faut se rappeler ce qu'est un mod&#232;le : &lt;a href=&quot;http://www.spip.net/fr_article3454.html&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://www.spip.net/fr_article3454.html&lt;/a&gt;.
Les mod&#232;les sont utilis&#233;s par SPIP, par exemple pour ins&#233;rer des images.
Le principe adopt&#233; pour la conversion vers LaTeX est de laisser de la souplesse.&lt;/p&gt; &lt;p&gt;Tout mod&#232;le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;xxx.html&lt;/code&gt; qui produit du html devrait avoir un &#233;quivalent &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;latex_xxx.html&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;&#192; l'int&#233;rieur, on utilisera les commandes LaTeX adapt&#233;es. Voir par exemple :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;a href=&quot;https://fr.wikibooks.org/wiki/LaTeX/%C3%89l%C3%A9ments_flottants_et_figures&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;https://fr.wikibooks.org/wiki/LaTeX/%C3%89l%C3%A9ments_flottants_et_figures&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;https://fr.wikibooks.org/wiki/LaTeX/Images#Extension_graphicx&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;https://fr.wikibooks.org/wiki/LaTeX/Images#Extension_graphicx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Il faut faire particuli&#232;rement attention.&lt;/p&gt; &lt;p&gt;En effet, soit un mod&#232;le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;document.html&lt;/code&gt;. Si je l'appelle de la mani&#232;re suivante : &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;document1&gt;&lt;/code&gt;, je poss&#232;de alors une &lt;a href=&quot;http://www.spip-contrib.net/La-balise-ENV&quot; class=&#039;spip_in&#039;&gt;variable d'environnement&lt;/a&gt; &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;#ENV{id_document}&lt;/code&gt; &#233;gale &#224; 1.&lt;/p&gt; &lt;p&gt;Je peux donc faire&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span style=&quot;color: #222;&quot;&gt;&lt;BOUCLE_document&lt;span style=&quot;color: #527EE0;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DOCUMENTS&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_document&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;
&#8230;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;/BOUCLE_document&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/aa03ec37befbcd1fc1ed099ae8651d53.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;En revanche, je ne peux pas dans le mod&#232;le correspondant &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;latex_document.html&lt;/code&gt; faire cela. Il faut que je fasse :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span style=&quot;color: #222;&quot;&gt;&lt;BOUCLE_document&lt;span style=&quot;color: #527EE0;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DOCUMENTS&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_document=&lt;span style=&quot;color: #CA5200;&quot;&gt;#ENV&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;
&#8230;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;/BOUCLE_document&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/b9e960184e9f2a71d235c96d06e3025a.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Par ailleurs, si on utilise une image, il faudra se servir du filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|ziptex_copier_img&lt;/code&gt; du &lt;a href=&quot;http://www.spip-contrib.net/Reference-de-ZipTeX&quot; class=&#039;spip_in&#039;&gt;plugin ziptex&lt;/a&gt;, pour s'assurer que l'image sera bien pr&#233;sente dans le zip.&lt;/p&gt; &lt;p&gt;On pourra s'inspirer des mod&#232;les pr&#233;sents dans &lt;a href=&quot;http://www.spip-contrib.net/Fabriquer-les-tex-puis-le-PDF&quot; class=&#039;spip_out&#039;&gt;le squelette Documentation2LaTeX&lt;/a&gt;.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Le code&lt;/h3&gt;
&lt;p&gt;Un code entre deux balises code produit &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\verb&#161;lecode&#161;&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Si on utilise le &lt;a href=&quot;http://www.spip-contrib.net/Coloration-code&quot; class=&#039;spip_in&#039;&gt;plugin coloration code&lt;/a&gt;, alors il faudra utiliser le package &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;minted&lt;/code&gt; dans le fichier LaTeX final.&lt;/p&gt; &lt;p&gt;Ce package n&#233;c&#233;ssite :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; d'avoir &lt;a href=&quot;http://pygments.org/docs/installation/&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;pygments install&#233;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; de compiler en ligne de commande, avec &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;xelatex -shell-escape xxx&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;En outre, il faudra avoir l'anglais d&#233;clar&#233; comme langue, dans le pr&#233;ambule :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_latex code&quot;&gt;&lt;span style=&quot;color: #800000; font-weight: normal;&quot;&gt;\setotherlanguage&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;english&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;On obtiendra les r&#233;sultats suivants :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Pour un code pr&#233;sent pr&#233;sent &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;cadre&gt;&lt;/code&gt; :
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_latex code&quot;&gt;&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\begin&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;english&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\begin&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;minted&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}[&lt;/span&gt;&lt;span style=&quot;color: #C08020; font-weight: normal;&quot;&gt;linenos&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;]{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;langage&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
Code num&#233;rot&#233;&lt;br /&gt;
&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\end&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;minted&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\end&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;english&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/c57d007184f0a510098ec94070ce117e.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Pour un code pr&#233;sent entre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;&lt;/code&gt; :
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_latex code&quot;&gt;&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\begin&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;english&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\begin&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;minted&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;langage&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
Code non num&#233;rot&#233;&lt;br /&gt;
&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\end&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;minted&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\end&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;english&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/9cc87659bceea082fc8d0a3cdf37911a.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;En outre, deux cas particulier :
&lt;br /&gt;- Si on cite du code PHP, il faut ajouter : &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;#FILTRE{latex_recuperer_php}&lt;/code&gt; dans le squelette.
&lt;br /&gt;- Si on cite du code SPIP, il faut &lt;a href=&quot;http://www.spip-contrib.net/Installer-la-coloration-syntaxique-pour-SPIP-dans&quot; class=&#039;spip_in&#039;&gt;installer le module de coloration syntaxique de SPIP pour pygments&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#039;nb1&#039;&gt;
&lt;p&gt;&lt;span class=&quot;spip_note_ref&quot;&gt;[&lt;a href=&#039;#nh1&#039; class=&#039;spip_note&#039; title=&#039;Notes 1&#039; rev=&#039;footnote&#039;&gt;1&lt;/a&gt;] &lt;/span&gt;On relira &lt;a href=&quot;http://programmer.spip.org/Empecher-les-traitements&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;la documentation sur les balise &#233;toil&#233;es&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#039;nb2&#039;&gt;
&lt;p&gt;&lt;span class=&quot;spip_note_ref&quot;&gt;[&lt;a href=&#039;#nh2&#039; class=&#039;spip_note&#039; title=&#039;Notes 2&#039; rev=&#039;footnote&#039;&gt;2&lt;/a&gt;] &lt;/span&gt;Je cherche encore un package permettant de le faire.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;LaTeXWheel est le plugin qui permet de convertir des raccourcis SPIP en code LaTeX. Il fonctionne gr&#226;ce &#224; [textwheel-&gt;http://zzz.rezo.net/Presentation-de-Textwheel.html], g&#233;n&#233;ralement en conjonction avec ZipTeX. Cet article liste : -* les transformations de LaTeXWheel -* les packages LaTeX n&#233;c&#233;ssaire pour chaque outils. [On consultera le tutoriel pour une premi&#232;re approche-&gt;4045]. &lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;{{{Les fonctions de base}}} La fonction de base est la fonction &lt;code&gt;|propre_latex&lt;/code&gt;. Elle s&#039;applique sur un champ brut, c&#039;est &#224; dire suivi d&#039;une &lt;code&gt;*&lt;/code&gt;[[On relira [la documentation sur les balise &#233;toil&#233;es-&gt;http://programmer.spip.org/Empecher-les-traitements].]]. &lt;code class=&#039;spip&#039;&gt;[(#CHAMP*|propre_latex)]&lt;/code&gt; Si on utilise le syst&#232;me de langue avec &lt;code&gt;&lt;multi&gt;&lt;/code&gt;, il faut appliquer au pr&#233;alable le filtre &lt;code&gt;extraire_multi&lt;/code&gt;. &lt;code class=&#039;spip&#039;&gt;[(#CHAMP*|extraire_multi{#LANG}|propre_latex)]&lt;/code&gt; {{{Les raccourcis qui ne demandent pas de package suppl&#233;mentaire}}} Les caract&#232;res suivants : &lt;code&gt;\$%&amp;_#&lt;/code&gt; qui ont une signification particuli&#232;re en LaTeX sont automatiquement prot&#233;g&#233;s en &#233;tant pr&#233;c&#233;d&#233;s de &lt;code&gt;\&lt;/code&gt;. &lt;code&gt;{texte en emphase}&lt;/code&gt; donne &lt;code&gt;\emph{texte en emphase}&lt;/code&gt; &lt;code&gt;{{texte en gras}}&lt;/code&gt; donne &lt;code&gt;\textbf{texte en gras}&lt;/code&gt; &lt;code&gt;{{{intertitre}}}&lt;/code&gt; donne &lt;code&gt;\subsection{intertitre}&lt;/code&gt; &lt;code&gt;[[Note de bas page]]&lt;/code&gt; donne &lt;code&gt;\footnote{Note de bas de page}&lt;/code&gt; &lt;code&gt;&lt;quote&gt;texte cit&#233;&lt;/quote&gt;&lt;/code&gt; produit &lt;code&gt;\begin{quotation}texte cit&#233;\end{quotation}&lt;/code&gt; Les raccourcis du type : &lt;code&gt;
- x
- x
- x
&lt;/code&gt; ne sont pas encore trait&#233;s. En revanche : &lt;code&gt;
-* &#233;l&#233;ment non num&#233;rot&#233;
-* &#233;l&#233;ment non num&#233;rot&#233;
&lt;/code&gt; produit &lt;code&gt;
\begin{itemize}
\item &#233;l&#233;ment num&#233;rot&#233;
\item &#233;l&#233;ment num&#233;rot&#233;
\end{itemize}
&lt;/code&gt; On consultera aussi un article de B&#233;bert pour [faire des styles persos de listes &#224; puce en LaTeX-&gt;http://bertrandmasson.free.fr/index.php?article5/dompter-ses-puces]. De m&#234;me : &lt;code&gt;
-# &#233;l&#233;ment num&#233;rot&#233;
-# &#233;l&#233;ment num&#233;rot&#233;
&lt;/code&gt; produit &lt;code class=&#039;latex&#039;&gt;
\begin{enumerate}
\item &#233;l&#233;ment num&#233;rot&#233;
\item &#233;l&#233;ment num&#233;rot&#233;
\end{enumerate}
&lt;/code&gt; Pour rappel en LaTeX, en standard, on ne peut pas imbriquer plus de quatre niveaux de listes[[Je cherche encore un package permettant de le faire.]]. {{{Les liens externes}}} Il est n&#233;cessaire d&#039;utiliser le package hyperref. &lt;code&gt;[-&gt;http://url.com]&lt;/code&gt; produit &lt;code&gt;\url{http://url.com}&lt;/code&gt; &lt;code&gt;[lien externe-&gt;http://url.com]&lt;/code&gt; produit &lt;code&gt;\href{http://url.com}{lien externe}&lt;/code&gt; {{{Les liens internes}}} Pour mettre des liens internes, il est n&#233;cessaire d&#039;ins&#233;rer des &lt;code&gt;\label&lt;/code&gt; correspondant &#224; l&#039;endroit vers lequel un liens veut pointer. On relira d&#039;abord une introduction [aux r&#233;f&#233;rences crois&#233;es en LaTeX-&gt;http://www.tuteurs.ens.fr/logiciels/latex/references.html]. Par exemple :
&lt;code class=&#039;spip&#039;&gt;
&lt;BOUCLE_articles(ARTICLES)&gt;
\chapter{[(#TITRE*|propre_latex)]}\label{art#ID_ARTICLE}
&lt;/BOUCLE_articles&gt;
&lt;/code&gt; Pour rappel, il existe trois commandes qui permettent de se servir d&#039;une r&#233;f&#233;rence crois&#233;e :
-* &lt;code&gt;\ref&lt;/code&gt; renvoie au num&#233;ro de la r&#233;f&#233;rence.
-* &lt;code&gt;\pageref&lt;/code&gt; renvoie &#224; la page de la r&#233;f&#233;rence.
-* &lt;code&gt;\nameref&lt;/code&gt;, du package &lt;code&gt;hyperref&lt;/code&gt;, donne le titre de l&#039;&#233;l&#233;ment sur lequel on renvoie. Voici comment LaTeXwheel transforme les raccourcis : &lt;code&gt;[texte-&gt;xxx]&lt;/code&gt; donne &lt;code&gt;texte (p.~\pageref{artxxx})&lt;/code&gt; &lt;code&gt;[texte-&gt;artxxx]&lt;/code&gt; donne &lt;code&gt;texte (p.~\pageref{artxxx})&lt;/code&gt; &lt;code&gt;[-&gt;artxxx]&lt;/code&gt; donne &lt;code&gt;\nameref{artxxx} (p.~\pageref{artxxx})&lt;/code&gt; Par d&#233;faut, les abr&#233;viations de type &lt;code&gt;art&lt;/code&gt;,&lt;code&gt;rub&lt;/code&gt;,sont conserv&#233;s. En revanche &lt;code&gt;articlexxx&lt;/code&gt; donne &lt;code&gt;artxxx&lt;/code&gt; et &lt;code&gt;rubriquexxx&lt;/code&gt; donne &lt;code&gt;rubxxx&lt;/code&gt;. En revanche &lt;code&gt;motxxx&lt;/code&gt; ou &lt;code&gt;autxxx&lt;/code&gt; reste tel que, simplement mis dans la commande LaTeX. {{{Les tableaux}}} Gros morceaux. Je ne rentrerais pas dans les d&#233;tails, car pour avoir des tableaux correspondant aux styles voulus, il faut mettre la main &#171; dans le camboui &#187; une fois le fichier &lt;code&gt;.tex&lt;/code&gt; produit. Je renvoie aux [fiches de B&#233;bert sur les tableaux-&gt;http://bertrandmasson.free.fr/index.php?categorie4/latex-tableau]. Sachons juste les r&#233;glages par d&#233;faut :
-* les tableaux sont de type &lt;code&gt;longtable&lt;/code&gt;, donc n&#233;c&#233;ssitent le package du m&#234;me nom.
-* la largeur des colonnes correspond &#224; la largeur &lt;code&gt;\textwidth&lt;/code&gt;, c&#039;est &#224; dire la largeur du texte, divis&#233; par le nombre de colonnes. Les colonnes sont de type &lt;code&gt;p&lt;/code&gt;
-* il n&#039;y a pas de traits.
-* le &lt;code&gt;\endhead&lt;/code&gt; est g&#233;r&#233; pour les ent&#234;tes.
-* les colonnes et les lignes peuvent &#234;tre fusionn&#233;s. Le cas &#233;ch&#233;ant, il faut utiliser le package &lt;code&gt;\multirow&lt;/code&gt;. {{{Le mod&#232;les}}} Il faut se rappeler ce qu&#039;est un mod&#232;le : http://www.spip.net/fr_article3454.html.
Les mod&#232;les sont utilis&#233;s par SPIP, par exemple pour ins&#233;rer des images.
Le principe adopt&#233; pour la conversion vers LaTeX est de laisser de la souplesse. Tout mod&#232;le &lt;code&gt;xxx.html&lt;/code&gt; qui produit du html devrait avoir un &#233;quivalent &lt;code&gt;latex_xxx.html&lt;/code&gt;. &#192; l&#039;int&#233;rieur, on utilisera les commandes LaTeX adapt&#233;es. Voir par exemple : -* https://fr.wikibooks.org/wiki/LaTeX/%C3%89l%C3%A9ments_flottants_et_figures
-* https://fr.wikibooks.org/wiki/LaTeX/Images#Extension_graphicx Il faut faire particuli&#232;rement attention. En effet, soit un mod&#232;le &lt;code&gt;document.html&lt;/code&gt;. Si je l&#039;appelle de la mani&#232;re suivante : &lt;code&gt;&lt;document1&gt;&lt;/code&gt;, je poss&#232;de alors une [variable d&#039;environnement-&gt;2298] &lt;code&gt;#ENV{id_document}&lt;/code&gt; &#233;gale &#224; 1. Je peux donc faire &lt;code class=&#039;spip&#039;&gt;
&lt;BOUCLE_document(DOCUMENTS){id_document}&gt;
&#8230;
&lt;/BOUCLE_document&gt; &lt;/code&gt; En revanche, je ne peux pas dans le mod&#232;le correspondant &lt;code&gt;latex_document.html&lt;/code&gt; faire cela. Il faut que je fasse : &lt;code class=&#039;spip&#039;&gt;
&lt;BOUCLE_document(DOCUMENTS){id_document=#ENV{id}}&gt;
&#8230;
&lt;/BOUCLE_document&gt; &lt;/code&gt; Par ailleurs, si on utilise une image, il faudra se servir du filtre &lt;code&gt;|ziptex_copier_img&lt;/code&gt; du [plugin ziptex-&gt;4052], pour s&#039;assurer que l&#039;image sera bien pr&#233;sente dans le zip. On pourra s&#039;inspirer des mod&#232;les pr&#233;sents dans [le squelette Documentation2LaTeX-&gt;http://www.spip-contrib.net/Fabriquer-les-tex-puis-le-PDF]. {{{Le code}}} Un code entre deux balises code produit &lt;code&gt;\verb&#161;lecode&#161;&lt;/code&gt;. Si on utilise le [plugin coloration code-&gt;rub577], alors il faudra utiliser le package &lt;code&gt;minted&lt;/code&gt; dans le fichier LaTeX final. Ce package n&#233;c&#233;ssite :
-* d&#039;avoir [pygments install&#233;-&gt;http://pygments.org/docs/installation/].
-* de compiler en ligne de commande, avec &lt;code&gt;xelatex -shell-escape xxx&lt;/code&gt;. En outre, il faudra avoir l&#039;anglais d&#233;clar&#233; comme langue, dans le pr&#233;ambule : &lt;code class=&#039;latex&#039;&gt;
\setotherlanguage{english}
&lt;/code&gt; On obtiendra les r&#233;sultats suivants : -* Pour un code pr&#233;sent pr&#233;sent &lt;code&gt;&lt;cadre&gt;&lt;/code&gt; :
&lt;code class=&#039;latex&#039;&gt;
\begin{english}
\begin{minted}[linenos]{langage}
Code num&#233;rot&#233;
\end{minted}
\end{english}
&lt;/code&gt;
-* Pour un code pr&#233;sent entre &lt;code&gt;&lt;code&gt;&lt;/code&gt; :
&lt;code class=&#039;latex&#039;&gt;
\begin{english}
\begin{minted}{langage}
Code non num&#233;rot&#233;
\end{minted}
\end{english}
&lt;/code&gt; En outre, deux cas particulier :
- Si on cite du code PHP, il faut ajouter : &lt;code&gt;#FILTRE{latex_recuperer_php}&lt;/code&gt; dans le squelette.
- Si on cite du code SPIP, il faut [installer le module de coloration syntaxique de SPIP pour pygments-&gt;4053].&lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		
		<enclosure url="http://files.spip.org/spip-zone/latexwheel.zip" length="10132" type="application/zip" />
		

	</item>



	<item>
		<title>Installer la coloration syntaxique pour SPIP dans Pygments</title>
		<link>http://www.spip-contrib.net/Installer-la-coloration-syntaxique-pour-SPIP-dans</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Installer-la-coloration-syntaxique-pour-SPIP-dans</guid>
		<dc:date>2012-01-21T20:33:20Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>

<category domain="http://www.spip-contrib.net/Coloration-SPIP-dans-Pygments">Coloration SPIP dans Pygments</category>


		<description>
&lt;p&gt;Pygments est un logiciel &#233;crit en Python, qui permet d'int&#233;grer de la coloration syntaxique dans un certain nombre de logiciels. Un module pour la syntaxe des squelettes SPIP a &#233;t&#233; &#233;crit. Cet article vient expliquer comment l'installer. Il ne vient pas expliquer comment installer pygments, ni comment s'en servir. Pour pouvoir faire l'installation, il faut se rendre sur la page Github du projet. Cliquez ensuite sur le bouton &#171; ZIP &#187;. D&#233;zipper le fichier t&#233;l&#233;charg&#233;, puis avec le Terminal, se (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Coloration-SPIP-dans-Pygments" rel="directory"&gt;Coloration SPIP dans Pygments&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon1574.png?1327177955&quot; width=&quot;75&quot; height=&quot;75&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;&lt;a href=&quot;http://pygments.org/&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;Pygments&lt;/a&gt; est un logiciel &#233;crit en Python, qui permet d'int&#233;grer de la coloration syntaxique dans un certain nombre de logiciels.&lt;/p&gt; &lt;p&gt;Un module pour la syntaxe des squelettes SPIP a &#233;t&#233; &#233;crit. Cet article vient expliquer comment l'installer.&lt;/p&gt; &lt;p&gt;&lt;i&gt;Il ne vient pas expliquer comment installer pygments, ni comment s'en servir.&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Pour pouvoir faire l'installation, il faut &lt;a href=&quot;https://github.com/maieul/spip-pygments&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;se rendre sur la page Github du projet&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Cliquez ensuite sur le bouton &#171; ZIP &#187;.&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10381 spip_documents spip_documents_center&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH27/gitzip-52edd.png&#039; width=&#039;520&#039; height=&#039;27&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;D&#233;zipper le fichier t&#233;l&#233;charg&#233;, puis avec le Terminal, se rendre dans le dossier ainsi d&#233;zipp&#233;, et saisir les ligne suivantes :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_bash code&quot;&gt;python setup.py build&lt;br /&gt;
python setup.py bdist_egg&lt;br /&gt;
&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;cd&lt;/span&gt; dist&lt;br /&gt;
easy_install &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;*&lt;/span&gt;egg&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/ca22c46e58b6482baa444626200e4f53.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;[Pygments-&gt;http://pygments.org/] est un logiciel &#233;crit en Python, qui permet d&#039;int&#233;grer de la coloration syntaxique dans un certain nombre de logiciels. Un module pour la syntaxe des squelettes SPIP a &#233;t&#233; &#233;crit. Cet article vient expliquer comment l&#039;installer. {Il ne vient pas expliquer comment installer pygments, ni comment s&#039;en servir.}&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;Pour pouvoir faire l&#039;installation, il faut [se rendre sur la page Github du projet-&gt;https://github.com/maieul/spip-pygments]. Cliquez ensuite sur le bouton &#171; ZIP &#187;. &lt;img10381|center&gt; D&#233;zipper le fichier t&#233;l&#233;charg&#233;, puis avec le Terminal, se rendre dans le dossier ainsi d&#233;zipp&#233;, et saisir les ligne suivantes : &lt;code class=&#039;bash&#039;&gt;
python setup.py build
python setup.py bdist_egg
cd dist
easy_install *egg
&lt;/code&gt;
&lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		

	</item>



	<item>
		<title>Comment cr&#233;er un environnement de travail pour d&#233;velopper du SPIP sur un MAC avec MAMP</title>
		<link>http://www.spip-contrib.net/Comment-creer-un-environnement-de-travail-pour,4050</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Comment-creer-un-environnement-de-travail-pour,4050</guid>
		<dc:date>2012-01-21T13:12:04Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Alexandra</dc:creator>

<category domain="http://www.spip-contrib.net/Developper-en-SPIP-sous-Mac-OS-X">D&#233;velopper en SPIP sous Mac OS X</category>

		<dc:subject>Toutes versions de SPIP</dc:subject>
		<dc:subject>Licence LGPL</dc:subject>
		<dc:subject>Documentation</dc:subject>
		<dc:subject>Webmestre</dc:subject>

		<description>
&lt;p&gt;Cet article est le premier de la s&#233;rie : Comment cr&#233;er un environnement de travail pour d&#233;velopper du SPIP sur un MAC avec MAMP Ouvrir MAMP sur l'ext&#233;rieur : Vhost, routeur, Domaine et DNS Quelques outils pour d&#233;velopper du SPIP sous Mac Nous allons utiliser MAMP 2 en version gratuite et licence GPL comme serveur web local (diff&#233;rent de MAMP Pro version payante). MAMP est l'acronyme de Macintosh Apache MySQL PHP et permet de lancer un serveur web local sous mac os X. C'est donc une solution (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Developper-en-SPIP-sous-Mac-OS-X" rel="directory"&gt;D&#233;velopper en SPIP sous Mac OS X&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/+-Toutes-versions-de-SPIP-+" rel="tag"&gt;Toutes versions de SPIP&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/+-Licence-LGPL-+" rel="tag"&gt;Licence LGPL&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Documentation,117" rel="tag"&gt;Documentation&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Webmestre" rel="tag"&gt;Webmestre&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon1572.jpg?1326991940&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Cet article est le premier de la s&#233;rie :
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Comment-creer-un-environnement-de-travail-pour,4050&quot; class=&#039;spip_in&#039;&gt;Comment cr&#233;er un environnement de travail pour d&#233;velopper du SPIP sur un MAC avec MAMP&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Deuxieme-partie-Comment-creer-un-environnement-de&quot; class=&#039;spip_in&#039;&gt;Ouvrir MAMP sur l'ext&#233;rieur : Vhost, routeur, Domaine et DNS&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Troisieme-partie-Comment-creer-un-environnement-de&quot; class=&#039;spip_in&#039;&gt;Quelques outils pour d&#233;velopper du SPIP sous Mac&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Nous allons utiliser MAMP 2 en version gratuite et licence GPL comme serveur web local (diff&#233;rent de MAMP Pro version payante). MAMP est l'acronyme de Macintosh Apache MySQL PHP et permet de lancer un serveur web local sous mac os X.&lt;/p&gt; &lt;p&gt;C'est donc une solution toute cl&#233; en main et tout-en-un, qui comprend Apache, PHP5 et PHP4, MySQL, PHPMyAdmin et SQLiteManage ...&lt;/p&gt; &lt;p&gt;Avantage par rapport &#224; d'autres solutions :
&lt;br /&gt;- MAMP ne compromettra pas une autre installation d'Apache.
&lt;br /&gt;- MAMP peut se copier sur un autre mac pour &#234;tre tout de suite op&#233;rationnel quand on change d'environnement.
&lt;br /&gt;- MAMP permet de switcher de version php.
&lt;br /&gt;- MAMP ne modifie aucun fichier du syst&#232;me.&lt;/p&gt; &lt;p&gt;Cet article se veut un compl&#233;ment &#224; &lt;a href=&quot;http://www.spip-contrib.net/Installer-SPIP-sous-Mac-OS-X-avec-MAMP&quot; class=&#039;spip_in&#039;&gt;l'excellent article de Fil&lt;/a&gt; qui reste toujours d'actualit&#233;, pour configurer au mieux votre environnement sous Mac OS X. Il est valable pour du L&#233;opard, Snow L&#233;opard et Lion. Un petit clin d'&#339;il &#224; Xdjuj que je remercie :-)&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt;Plan de la premi&#232;re partie : MAMP &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href=&quot;#Installation&quot; class=&#039;spip_ancre&#039;&gt;I/ Installation et lancement de MAMP&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;#Structure&quot; class=&#039;spip_ancre&#039;&gt;II/ Structure du MAMP&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;#Reglages&quot; class=&#039;spip_ancre&#039;&gt;III/ R&#233;glages de l'interface&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;#ReglageAvances&quot; class=&#039;spip_ancre&#039;&gt;IV/ Les r&#233;glages avanc&#233;s et personnalis&#233;s&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;#MiseAJour&quot; class=&#039;spip_ancre&#039;&gt;V/ Mettre &#224; jour sa version de MAMP en toute tranquillit&#233;, sans rien perdre de ses sites et de ses bases de donn&#233;es SQL&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;#Probleme&quot; class=&#039;spip_ancre&#039;&gt;VI/ En cas de probl&#232;mes&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a name=&quot;Installation&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;I/ Installation et lancement de MAMP&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. On t&#233;l&#233;charge MAMP sur le site officiel &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.mamp.info/en/index.html&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://www.mamp.info/en/index.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;On r&#233;cup&#232;re donc le pacquage zipp&#233; nomm&#233; MAMP_MAMP_PRO_2.0.x.zip, on le d&#233;-zippe puis on lance l'installation. Suivre les diff&#233;rentes &#233;tapes de l'installeur. MAMP s'installe &#224; la racine du dossier Applications. On doit avoir un compte administrateur sur le mac et connaitre son mot de passe d'admin.&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10350 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH429/mamp-26e21.jpg&#039; width=&#039;520&#039; height=&#039;429&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;2. On lance le logiciel en cliquant sur l'ic&#244;ne de l'application MAMP&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Une fen&#234;tre s'ouvre nous permettant de contr&#244;ler le bon lancement du serveur apache et du serveur de donn&#233;es MySQL.&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10351 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L420xH347/ouverture-f1fcc.jpg&#039; width=&#039;420&#039; height=&#039;347&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Les voyants sont verts en cas de r&#233;ussite, et rouges en cas d'&#233;chec. Il y a deux diodes correspondant l'une au serveur Apache, l'autre au serveur MySQL.&lt;/p&gt; &lt;p&gt;Une deuxi&#232;me fen&#234;tre, celle de la page d'accueil s'ouvre aussi. Cette page prouve &#233;galement que tout fonctionne et que l'installation de MAMP a r&#233;ussi.&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10352 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH421/accueil-5-c9857.jpg&#039; width=&#039;520&#039; height=&#039;421&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;L'URL par d&#233;faut du serveur web local sous MAMP est :&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://localhost:8888/MAMP&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://localhost:8888/MAMP&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Mais on peut &#233;galement y acc&#233;der en tapant l'adresse ip de localhost :&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://127.0.0.1:8888/MAMP&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://127.0.0.1:8888/MAMP&lt;/a&gt;&lt;/p&gt; &lt;p&gt;On peut utiliser l'adresse Rendez-Vous du partage web, Pr&#233;f&#233;rence syst&#232;me/partage/
avec l'option partage web de coch&#233;e. Les ordinateurs de votre r&#233;seau local peuvent acc&#233;der &#224; votre ordinateur par le biais de l'adresse : imacalex.local&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://imacalex.local:8888/MAMP&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://imacalex.local:8888/MAMP&lt;/a&gt;&lt;/p&gt; &lt;p&gt;On peut aussi ouvrir son serveur local vers l'ext&#233;rieur, au prix de quelques op&#233;rations que l'on d&#233;taillera par la suite sur son modem (mappage de port, DMZ &#8230;), sur son fichier hosts et ses zones DNS, et utiliser l'adresse ip sortante fourni par son FAI, un domaine ou un dyndns.org :
&lt;br /&gt;- &lt;a href=&quot;http://mondomaine.info:8888/MAMP/&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://mondomaine.info:8888/MAMP/&lt;/a&gt;
&lt;br /&gt;- http://monipfixe:8888/MAMP/
&lt;br /&gt;- &lt;a href=&quot;http://mondyndns.org:8888/MAMP/&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://mondyndns.org:8888/MAMP/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;3. Configurer les pr&#233;f&#233;rences de MAMP selon ses besoins.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Si vous d&#233;butez, laissez les options coch&#233;es par d&#233;faut.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;- L'onglet D&#233;marrer / Arr&#234;ter :&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10353 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L410xH343/demarrer_arreter-6cb48.jpg&#039; width=&#039;410&#039; height=&#039;343&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;- Cocher lancer les serveur au d&#233;marrage de MAMP
&lt;br /&gt;- Cocher Arr&#234;ter les serveurs en quittant MAMP
&lt;br /&gt;- D&#233;cocher V&#233;rifier MAMP Pro au d&#233;marrage de MAMP. On n'utilise pas la version payante
&lt;br /&gt;- Cocher la page d'accueil au d&#233;marrage, URL de la page d'accueil /MAMP/ qui correspond donc &#224; &lt;a href=&quot;http://localhost:8888/MAMP&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://localhost:8888/MAMP&lt;/a&gt; ou &lt;a href=&quot;http://127.0.0.1:8888/MAMP&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://127.0.0.1:8888/MAMP&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;- L'onglet Port :&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10354 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L425xH345/port-7d25f.jpg&#039; width=&#039;425&#039; height=&#039;345&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Par d&#233;faut ce ne sont pas les ports traditionnels qui sont utilis&#233;s par MAMP pour Apache et MySQL, pour ne pas rentrer en conflit avec d'autres serveurs.
MAMP propose en standard le port 8888 pour Apache, le port 80 &#233;tant normalement le port utilis&#233; par d&#233;faut pour le serveur web. MAMP propose en standard le port 8889 pour MySQL, le port 3306 &#233;tant normalement le port utilis&#233; par d&#233;faut.&lt;/p&gt; &lt;p&gt;On peut switcher depuis cet onglet sur les Ports par d&#233;faut d'Apache et de MySQL ou revenir aux Ports par d&#233;faut de MAMP selon ses besoins.
Mais on peut aussi d&#233;finir ses propres ports si on le souhaite.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;- L'onglet PHP :&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10355 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L419xH348/php-ab9e4.jpg&#039; width=&#039;419&#039; height=&#039;348&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;MAMP a l'&#233;norme avantage de proposer deux versions de PHP :
&lt;br /&gt;- La version 5.2.17
&lt;br /&gt;- et la 5.3.6&lt;/p&gt; &lt;p&gt;Ceci s'av&#232;re tr&#232;s utile pour tester et d&#233;velopper sous diff&#233;rentes versions de PHP. Par d&#233;faut on prendra la version propos&#233;e qui est &#224; plus r&#233;cente, &#224; savoir le 5.3.6.&lt;/p&gt; &lt;p&gt;MAMP nous propose aussi des extensions PHP pour le cache, &#224; savoir XCache eAccelerator et APC. J'avoue ne pas trop savoir &#224; quoi cela correspond. Nous avons laiss&#233; le XCache propos&#233; par d&#233;faut.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;- L'onglet Apache :&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10356 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L427xH349/apache-03f76.jpg&#039; width=&#039;427&#039; height=&#039;349&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Il faut d&#233;finir ici le Document Root. Par d&#233;faut il s'agit de /Applications/MAMP/htdocs
Mais on peut choisir un r&#233;pertoire n'appartenant pas &#224; MAMP si on le souhaite, n'importe o&#249; dans sa maisonnette d'utilisateur mac.&lt;/p&gt; &lt;p&gt;Traditionnellement, ceux qui n'utilisent pas /Applications/MAMP/htdocs se servent du r&#233;pertoire Sites de leur dossier utilisateur /Users/user/Sites. L'avantage de conserver en Document Root le r&#233;pertoire htdocs est que l'on peut copier l'application MAMP sur un autre mac et &#234;tre tout de suite op&#233;rationnel. On centralise en un m&#234;me endroit tous les &#233;l&#233;ments. Mais les autres choix de Document Root peuvent tout aussi bien se justifier et de d&#233;fendre. Il s'agit donc du choix du document racine du serveur web, et c'est l&#224; qu'il conviendra de d&#233;poser tous ses r&#233;pertoires de sites web.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;- Cr&#233;er une base SQL :&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;depuis l'onglet PhpMyadmin, dans la case cr&#233;er une nouvelle base de donn&#233;es en entrant son nom.&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10357 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH419/creerbase-52ad0.jpg&#039; width=&#039;520&#039; height=&#039;419&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Dans interclassement pour la connexion MySQL cocher utf8_general_ci et cliquer ensuite sur cr&#233;er. On pourra &#233;ventuellement cr&#233;er un user sp&#233;cifique pour cette base de donn&#233;e avec les privil&#232;ges qu'il convient. Pour ce faire, cliquer sur l'onglet Privil&#232;ges de PhpMyAdmin, puis cliquer sur ajouter un utilisateur et remplir les cases du formulaire.&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10358 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH457/privilege-9aaf6.jpg&#039; width=&#039;520&#039; height=&#039;457&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;a name=&quot;Structure&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;II/ Structure du MAMP&lt;/h3&gt;
&lt;p&gt;&lt;span class=&#039;spip_document_10359 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH397/structure-48b1d.jpg&#039; width=&#039;520&#039; height=&#039;397&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;
MAMP.app sert &#224; lancer l'application. Elle a &#233;t&#233; install&#233;e dans Applications, et elle devra imp&#233;rativement y rester. Les r&#233;pertoires principaux de MAMP sont les suivants :&lt;/p&gt; &lt;p&gt;- /Applications/MAMP : r&#233;pertoire racine de l'application MAMP
&lt;br /&gt;- /Applications/MAMP/cgi-bin
&lt;br /&gt;- /Applications/MAMP/library : on y mettra notamment le my.cnf
&lt;br /&gt;- /Applications/MAMP/bin : r&#233;pertoire contenant les ex&#233;cutables d'Apache, PHP4, PHP5, MySQL5 et SQLite.
&lt;br /&gt;- /Applications/MAMP/conf : r&#233;pertoire contenant les fichiers de configuration d'Apache (httpd.conf), et SQLiteManager (config.db).
&lt;br /&gt;- /Applications/MAMP/tmp : r&#233;pertoire contenant les fichiers temporaires cr&#233;&#233;s par les ex&#233;cutables. Le r&#233;pertoire /tmp/php contient notamment les fichiers temporaires des sessions PHP.
&lt;br /&gt;- /Applications/MAMP/db : r&#233;pertoire contenant les bases de donn&#233;es SQLite et MySQL.
&lt;br /&gt;- /Applications/MAMP/logs : r&#233;pertoire contenant les fichiers de logs d'erreurs de PHP, Apache et MySQL.
&lt;br /&gt;- /Applications/MAMP/htdocs : r&#233;pertoire contenant les diff&#233;rents projets de sites Web si un autre dossier n'a pas &#233;t&#233; s&#233;lectionn&#233;.&lt;/p&gt; &lt;p&gt;&lt;a name=&quot;Reglages&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;III/ R&#233;glages de l'interface&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;- Onglet Start&lt;/strong&gt;
Sur la page d'accueil o&#249; dans l'onglet start, se trouvent les informations importantes dont on a besoin pour configurer un CMS, &#224; savoir le h&#244;te : localhost, le port SQL : 8889, l'user : root, le mot de passe : root&lt;/p&gt; &lt;p&gt;&lt;strong&gt;- Onglet Phpinfo&lt;/strong&gt;
Toutes les informations au niveau de la configuration de PHP.
On y trouve notamment les informations du traditionnel php.info, avec la version de PHP active, ici Version 5.3.6, le chemin du fichier php.ini, il peut changer selon les versions de MAMP, /Applications/MAMP/bin/php/php5.3.6/conf/php.ini. On pourra y lire les valeurs par d&#233;faut de max_execution_time &#224; 30 et de memory_limit &#224; 32M du php.ini qu'il conviendra d'augmenter d'office pour une utilisation sereine de MAMP avec un CMS dont SPIP.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;- Onglet : Xcache&lt;/strong&gt;
On y touche pas. Je sais m&#234;me pas trop &#224; quoi &#231;a sert.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;- Onglet Phpmyadmin&lt;/strong&gt;
L'interface de contr&#244;le de MySQL.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;- Onglet SQLiteManager&lt;/strong&gt;
l'interface de contr&#244;le de SQLite pour ceux qui utilise du SQLlight nativement propos&#233; avec SPIP 3. M&#234;me si le manager nous semble beaucoup moins au point que le traditionnel Phpmyadmin. Nous continuons pour notre part &#224; utiliser MySQL avec SPIP 3.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;- Onglet Faq&lt;/strong&gt;
Foire aux questions en anglais&lt;/p&gt; &lt;p&gt;&lt;strong&gt;- Onglet Try MAMP Pro&lt;/strong&gt;
On ne l'abordera pas ici, mais nos diff&#233;rents r&#233;glages nous permettront d'avoir plus ou moins les m&#234;mes options que la version Pro.&lt;/p&gt; &lt;p&gt;&lt;a name=&quot;ReglageAvances&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;IV/ Les r&#233;glages avanc&#233;s et personnalis&#233;s&lt;/h3&gt;
&lt;p&gt;Voici quelques r&#233;glages et quelques &#233;l&#233;ments de personnalisation du MAMP &#224; faire pour travailler sereinement comme sur un vrai serveur d&#233;di&#233; mais en local. Toutes ne seront pas obligatoires, &#224; vous de voir selon vos besoins.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;1. Ajuster les valeurs de php.ini&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Il conviendra de modifier le php.ini de chacune des versions php propos&#233;es par MAMP. Le chemin vers le php.ini peut changer selon les versions de MAMP. Ne pas h&#233;siter &#224; faire dans le terminal ces lignes :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;alexmacapple:~ alex$ cd /Applications/MAMP&lt;br /&gt; alexmacapple:~ alex$&lt;br /&gt; alexmacapple:MAMP alex$ find / -name php.ini 2&gt;/dev/null&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Qui nous donnera les bons chemins :&lt;/p&gt; &lt;p&gt;&lt;i&gt;/Applications/MAMP/bin/php/php5.2.17/conf/php.ini&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt;/Applications/MAMP/bin/php/php5.3.6/conf/php.ini&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;memory_limit set&lt;/strong&gt; est &#224; 8MB par d&#233;faut dans MAMP, il conviendra de lui donner une valeur de 32 MB pour &#234;tre tranquille. Ce r&#233;glage l&#224; est imp&#233;ratif pour lancer confortablement un SPIP r&#233;cent sous peine d'obtenir des erreurs de timeout.&lt;/p&gt; &lt;p&gt;On pourra &#233;galement v&#233;rifier que &lt;strong&gt;max_execution_time&lt;/strong&gt; est &#224; 30 MB&lt;/p&gt; &lt;p&gt;On peut &#233;galement rajout&#233; ces lignes pour activer les erreurs php&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;error_reporting : E_ALL&lt;br /&gt; display_errors : On&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;2. Cr&#233;er dans MAMP le fichier de configuration MySQL (my.cnf)&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Si vous avez besoin d'ajuster vos param&#232;tres SQL, il conviendra de cr&#233;er un fichier &lt;strong&gt;my.cnf&lt;/strong&gt; dans le r&#233;pertoire suivant /Applications/MAMP/Library/my.cnf&lt;/p&gt; &lt;p&gt;Il faut copier et surcharger le fichier qui se trouve dans /Applications/MAMP/Library/support-files/my-&#173;medium.cnf et le placer dans le r&#233;pertoire /Applications/MAMP/Library/ et le renommer en my.cnf&lt;/p&gt; &lt;p&gt;On peut le faire en ligne de commande &#224; l'aide des lignes suivantes&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;sudo&lt;br /&gt; cp&lt;br /&gt; /Applications/MAMP/Library/support-&#173;files/my-&#173;medium.cnf&lt;br /&gt; /Applications/MAMP/Library/my.cnf&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Attention l'emplacement peut changer selon les versions de MAMP utilis&#233;es. On peut sinon rechercher le fichier par le terminal en tapant les commandes pour voir s'ils existent et o&#249; ils se trouvent :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;find / -name my.cnf 2&gt;/dev/null&lt;br /&gt; find / -name my-medium.cnf 2&gt;/dev/null&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&#201;diter le fichier my.cnf et notamment modifiant la valeur de &lt;strong&gt;max_allowed_packet&lt;/strong&gt; :
passer de max_allowed_packet = 1M &#224; max_allowed_packet = 128M pourra nous &#234;tre d'un grand secours dans le cas de tr&#232;s grosses bases de donn&#233;es.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;3. Utiliser MySQL en ligne de commande avec MAMP sans passer par PhpMyAdmin&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Il faut ouvrir le terminal, dans /applications/utilitaires/Terminal
Et taper la commande suivante :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;/Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;span class=&#039;spip_document_10360 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH315/termsql-d7ada.jpg&#039; width=&#039;520&#039; height=&#039;315&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;On peut d&#232;s lors utiliser les commandes de MySQL. Taper par exemple : show databases ;&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10361 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH398/sqlst-294ff.jpg&#039; width=&#039;520&#039; height=&#039;398&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;On peut aussi cr&#233;er un &lt;strong&gt;lien symbolique&lt;/strong&gt; pour n'avoir &#224; taper que mysql depuis le shell&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;sudo ln -s /Applications/MAMP/Library/bin/mysql /usr/local/bin/mysql&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Une autre m&#233;thode, alternative au lien symbolique, consiste &#224; cr&#233;er un fichier &lt;strong&gt;.profile&lt;/strong&gt;, fichier cach&#233;, dans son r&#233;pertoire de home du mac /users/nom, de fa&#231;on &#224; y renseigner le PATH, &#224; savoir le chemin de recherche des fichiers ex&#233;cutables de MySQL&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;export PATH=/Applications/MAMP/Library/bin:$PATH&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;span class=&#039;spip_document_10362 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH218/path-eace4.jpg&#039; width=&#039;520&#039; height=&#039;218&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;On peut taper . .profile dans le terminal pour relancer son profile&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;alexmacapple:~ alex $ . .profile&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;puis &#233;cho $PATH pour s'assurer que la ligne a bien &#233;t&#233; prise en compte&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;alexmacapple:~ alex$ echo $PATH&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;On pourra alors d&#233;sormais taper un simple mysql -u root -p pour se connecter &#224; MySQL en ligne de commande&lt;/p&gt; &lt;p&gt;Injecter un dump SQL :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;mysql -uUSER -pPASS spip_db &lt; mabase_db.sql &lt;/code&gt;&lt;/div&gt;&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;cat Fichier.sql | mysql -uroot --password=root --database=nombase&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Faire un sauvegarde SQL&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;mysqldump --opt spip &gt; sauvegarde_spip.sql&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;4. Changer le password de MySQL :&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Par d&#233;faut le login et le mot de passe de MySQL est root/root. Si vous n'ouvrez pas le serveur MAMP vers l'ext&#233;rieur, aucun souci, vous pouvez laisser comme cela. En revanche si vous voulez l'ouvrir sur le monde ext&#233;rieur, et que votre serveur est accessible sur internet, il sera pr&#233;f&#233;rable de changer le mot de passe attribu&#233; par d&#233;faut pour des raisons de s&#233;curit&#233;.&lt;/p&gt; &lt;p&gt;Pour changer le mot de passe MySQL, il faudra faire deux choses :&lt;/p&gt; &lt;p&gt;1. Utiliser la ligne de commande suivante dans le terminal&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;/Applications/MAMP/Library/bin/mysqladmin -u root -p password [NEWPASSWORD]&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;2. Prendre un &#233;diteur de texte pour modifier l'ancien mot de passe &#224; quatre endroits diff&#233;rents :&lt;/p&gt; &lt;p&gt;/Applications/MAMP/bin/phpMyAdmin-X.X.X/config.inc.php
&lt;br /&gt;ligne 86&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;$cfg[&#039;Servers&#039;][$i][&#039;password&#039;] = &#039;root&#039;;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;/Applications/MAMP/bin/mamp/index.php
&lt;br /&gt;ligne 15&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;$link = @mysql_connect(&#039;:/Applications/MAMP/tmp/mysql/mysql.sock&#039;, &#039;root&#039;,&lt;br /&gt; &#039;root&#039;);&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;/Applications/MAMP/bin/stopMysql.sh
&lt;br /&gt;Remplacer -proot par -pvotrepass&lt;/p&gt; &lt;p&gt;On peut &#233;galement le changer dans la page d'accueil de MAMP
&lt;br /&gt;/Applications/MAMP/bin/mamp/French/mamp.inc.php
ligne 16 et ligne 23&lt;/p&gt; &lt;p&gt;&lt;strong&gt;5. Ouvrir MAMP automatiquement au d&#233;marrage du mac&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Allez dans le menu pomme, puis Pr&#233;f&#233;rences Syst&#232;me&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10363 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH440/compte-eea52.jpg&#039; width=&#039;520&#039; height=&#039;440&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Puis dans l'onglet compte/ouverture, rajouter MAMP en ouverture automatique de session&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10364 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH420/add-53e10.jpg&#039; width=&#039;520&#039; height=&#039;420&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Cliquer sur ajouter&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10365 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH419/ouv-c89a9.jpg&#039; width=&#039;520&#039; height=&#039;419&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Et c'est tout bon. Si votre mac s'&#233;teint, le MAMP s'ouvrira automatiquement tout seul &#224; la prochaine ouverture.&lt;/p&gt; &lt;p&gt;On peut m&#234;me, toujours dans les pr&#233;f&#233;rences system et dans l'onglet &#233;conomiseur d'&#233;nergie cocher la case d&#233;marrer automatiquement le mac apr&#232;s une panne de courant.&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10366 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH373/coup-bfe40.jpg&#039; width=&#039;520&#039; height=&#039;373&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;a name=&quot;MiseAJour&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;V/ Mettre &#224; jour sa version de MAMP en toute tranquillit&#233;, sans rien perdre de ses sites et de ses bases de donn&#233;es SQL&lt;/h3&gt;
&lt;p&gt;- 1. On quitte l'application MAMP ce qui a pour effet d'arr&#234;ter les serveurs Apache et MySQL, et on arr&#234;te les process pouvant tourner gr&#226;ce au moniteur d'activit&#233;.
&lt;br /&gt;- 2. On Quitte l'application MAMP ce qui a pour effet d'arr&#234;ter les serveurs Apache et SQL
&lt;br /&gt;- 3. On renomme dans Applications le dossier MAMP en MAMP.old &lt;br /&gt;- 4. On lance la nouvelle installation de MAMP que l'on aura au pr&#233;alable t&#233;l&#233;charg&#233;e sur le site officiel
&lt;br /&gt;- 5. On va copier certaines donn&#233;es de MAMP.old dans MAMP : Copier le contenu du sous-dossier /htdocs vers MAMP (Si vos sites sont dans ce Document Root). Copier le contenu du sous-dossier /db/mysql vers MAMP (Mais pas les sous-dossiers mysql/, performance_schema/ et le fichier mysql_upgrade_info)
&lt;br /&gt;- 6. Copier le fichier /conf/apache/httpd.conf vers MAMP si vous aviez modifi&#233; le fichier de conf (faire un diff pour voir ce qui a chang&#233; dans la nouvelle version et les r&#233;percuter)
&lt;br /&gt;- 7. Copier le fichier /bin/php/[Votre version]/conf/php.ini vers MAMP si vous aviez modifi&#233; le fichier (faire un diff pour voir ce qui a chang&#233; dans la nouvelle version, r&#233;percuter notamment le memory limait)
&lt;br /&gt;- 8. Relancer MAMP dans sa nouvelle version. La mise &#224; jour est termin&#233;e&lt;/p&gt; &lt;p&gt;(Et si on est un brin para-no :-), on peut &#233;galement, avant de mettre a jour le MAMP, faire un backup manuel de toutes les bases sql dans PhpMyAdmin, mais de toute fa&#231;on pas de panique, on pourra toujours revenir &#224; son ancien MAMP en supprimant le .old et en renommant le nouveau MAMP, puis en fermant les process.)&lt;/p&gt; &lt;p&gt;&lt;a name=&quot;Probleme&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;VI/ En cas de probl&#232;mes&lt;/h3&gt;
&lt;p&gt;Il est possible que le MySQL de votre version de MAMP parfois refuse de se lancer ou ne fonctionne plus. Il convient tout d'abord de fermer MAMP.&lt;/p&gt; &lt;p&gt;Il faut ensuite ouvrir le moniteur d'activit&#233; (Applications/Utilitaires/Moniteur d'activit&#233;/) et de fermer le ou les process sql qui pourraient &#234;tre en conflit.&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10368 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH402/moniteuractivite-953c3.jpg&#039; width=&#039;520&#039; height=&#039;402&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;On peut &#233;galement aller directement dans le terminal et taper le code suivant d'un seul coup, m&#234;me si personnellement je pr&#233;f&#232;re la m&#233;thode avec le moniteur d'activit&#233; qui liste pr&#233;cis&#233;ment les process SQL ouverts qui pourraient rentrer en conflit&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;ps aux | grep mysql&lt;br /&gt; lsof -i&lt;br /&gt; killall -9 mysqld&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;On red&#233;marre ensuite le mac (pas obligatoire mais c'est une bonne veille habitude), on ouvre le MAMP et les serveurs devraient red&#233;marrer.&lt;/p&gt; &lt;p&gt;On peut aussi, par pr&#233;caution, bien que cela ne soit pas forc&#233;ment utile faire un chmod r&#233;cursif 777 sur MAMP pour &#233;carter tout probl&#232;me de permission (sinon Pomme i, et donner les droits en &#233;criture pour tous les r&#233;pertoires)&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;# sudo chmod -Rfv 777 /Applications/MAMP&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Lire la suite :
&lt;a href=&quot;http://www.spip-contrib.net/Deuxieme-partie-Comment-creer-un-environnement-de&quot; class=&#039;spip_in&#039;&gt;Ouvrir MAMP sur l'ext&#233;rieur : Vhost, routeur, Domaine et DNS&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Nous n'avons pas abord&#233; ici la question de la mutualisation, car nous ne l'avons jamais pratiqu&#233;, et surtout parce qu'un tr&#232;s bon article fait par Ma&#239;eul existe d&#233;j&#224;.
&lt;a href=&quot;http://geekographie.maieul.net/Gerer-beaucoup-de-sites-SPIP-en&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://geekographie.maieul.net/Gere...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class='raw_chapo'&gt;Cet article est le premier de la s&#233;rie : - [-&gt;art4050] - [-&gt;art4048] - [-&gt;art4049] Nous allons utiliser MAMP 2 en version gratuite et licence GPL comme serveur web local (diff&#233;rent de MAMP Pro version payante). MAMP est l'acronyme de Macintosh Apache MySQL PHP et permet de lancer un serveur web local sous mac os X. C&#039;est donc une solution toute cl&#233; en main et tout-en-un, qui comprend Apache, PHP5 et PHP4, MySQL, PHPMyAdmin et SQLiteManage ... Avantage par rapport &#224; d&#039;autres solutions : - MAMP ne compromettra pas une autre installation d'Apache. - MAMP peut se copier sur un autre mac pour &#234;tre tout de suite op&#233;rationnel quand on change d&#039;environnement. - MAMP permet de switcher de version php. - MAMP ne modifie aucun fichier du syst&#232;me. Cet article se veut un compl&#233;ment &#224; [l&#039;excellent article de Fil-&gt;article2606] qui reste toujours d&#039;actualit&#233;, pour configurer au mieux votre environnement sous Mac OS X. Il est valable pour du L&#233;opard, Snow L&#233;opard et Lion. Un petit clin d&#039;&#339;il &#224; Xdjuj que je remercie :-)&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;{{Plan de la premi&#232;re partie : MAMP }} - [I/ Installation et lancement de MAMP-&gt;#Installation] - [II/ Structure du MAMP-&gt;#Structure] - [III/ R&#233;glages de l&#039;interface-&gt;#Reglages] - [IV/ Les r&#233;glages avanc&#233;s et personnalis&#233;s-&gt;#ReglageAvances] - [V/ Mettre &#224; jour sa version de MAMP en toute tranquillit&#233;, sans rien perdre de ses sites et de ses bases de donn&#233;es SQL-&gt;#MiseAJour] - [VI/ En cas de probl&#232;mes-&gt;#Probleme] [Installation&lt;-] {{{I/ Installation et lancement de MAMP}}} {{1. On t&#233;l&#233;charge MAMP sur le site officiel }} [-&gt;http://www.mamp.info/en/index.html] On r&#233;cup&#232;re donc le pacquage zipp&#233; nomm&#233; MAMP_MAMP_PRO_2.0.x.zip, on le d&#233;-zippe puis on lance l&#039;installation. Suivre les diff&#233;rentes &#233;tapes de l&#039;installeur. MAMP s&#039;installe &#224; la racine du dossier Applications. On doit avoir un compte administrateur sur le mac et connaitre son mot de passe d&#039;admin. &lt;img10350&gt; {{2. On lance le logiciel en cliquant sur l&#039;ic&#244;ne de l&#039;application MAMP}} Une fen&#234;tre s&#039;ouvre nous permettant de contr&#244;ler le bon lancement du serveur apache et du serveur de donn&#233;es MySQL. &lt;img10351&gt; Les voyants sont verts en cas de r&#233;ussite, et rouges en cas d&#039;&#233;chec. Il y a deux diodes correspondant l&#039;une au serveur Apache, l&#039;autre au serveur MySQL. Une deuxi&#232;me fen&#234;tre, celle de la page d&#039;accueil s&#039;ouvre aussi. Cette page prouve &#233;galement que tout fonctionne et que l&#039;installation de MAMP a r&#233;ussi. &lt;img10352&gt; L'URL par d&#233;faut du serveur web local sous MAMP est : [-&gt;http://localhost:8888/MAMP] Mais on peut &#233;galement y acc&#233;der en tapant l&#039;adresse ip de localhost : [-&gt;http://127.0.0.1:8888/MAMP] On peut utiliser l&#039;adresse Rendez-Vous du partage web, Pr&#233;f&#233;rence syst&#232;me/partage/ avec l&#039;option partage web de coch&#233;e. Les ordinateurs de votre r&#233;seau local peuvent acc&#233;der &#224; votre ordinateur par le biais de l'adresse : imacalex.local [-&gt;http://imacalex.local:8888/MAMP] On peut aussi ouvrir son serveur local vers l&#039;ext&#233;rieur, au prix de quelques op&#233;rations que l&#039;on d&#233;taillera par la suite sur son modem (mappage de port, DMZ &#8230;), sur son fichier hosts et ses zones DNS, et utiliser l&#039;adresse ip sortante fourni par son FAI, un domaine ou un dyndns.org : - http://mondomaine.info:8888/MAMP/ - http://monipfixe:8888/MAMP/ - http://mondyndns.org:8888/MAMP/ {{3. Configurer les pr&#233;f&#233;rences de MAMP selon ses besoins.}} Si vous d&#233;butez, laissez les options coch&#233;es par d&#233;faut. {{- L&#039;onglet D&#233;marrer / Arr&#234;ter :}} &lt;img10353&gt; - Cocher lancer les serveur au d&#233;marrage de MAMP - Cocher Arr&#234;ter les serveurs en quittant MAMP - D&#233;cocher V&#233;rifier MAMP Pro au d&#233;marrage de MAMP. On n&#039;utilise pas la version payante - Cocher la page d&#039;accueil au d&#233;marrage, URL de la page d&#039;accueil /MAMP/ qui correspond donc &#224; [-&gt;http://localhost:8888/MAMP] ou [-&gt;http://127.0.0.1:8888/MAMP] {{- L&#039;onglet Port :}} &lt;img10354&gt; Par d&#233;faut ce ne sont pas les ports traditionnels qui sont utilis&#233;s par MAMP pour Apache et MySQL, pour ne pas rentrer en conflit avec d&#039;autres serveurs. MAMP propose en standard le port 8888 pour Apache, le port 80 &#233;tant normalement le port utilis&#233; par d&#233;faut pour le serveur web. MAMP propose en standard le port 8889 pour MySQL, le port 3306 &#233;tant normalement le port utilis&#233; par d&#233;faut. On peut switcher depuis cet onglet sur les Ports par d&#233;faut d&#039;Apache et de MySQL ou revenir aux Ports par d&#233;faut de MAMP selon ses besoins. Mais on peut aussi d&#233;finir ses propres ports si on le souhaite. {{- L&#039;onglet PHP :}} &lt;img10355&gt; MAMP a l&#039;&#233;norme avantage de proposer deux versions de PHP : - La version 5.2.17 - et la 5.3.6 Ceci s&#039;av&#232;re tr&#232;s utile pour tester et d&#233;velopper sous diff&#233;rentes versions de PHP. Par d&#233;faut on prendra la version propos&#233;e qui est &#224; plus r&#233;cente, &#224; savoir le 5.3.6. MAMP nous propose aussi des extensions PHP pour le cache, &#224; savoir XCache eAccelerator et APC. J&#039;avoue ne pas trop savoir &#224; quoi cela correspond. Nous avons laiss&#233; le XCache propos&#233; par d&#233;faut. {{- L&#039;onglet Apache :}} &lt;img10356&gt; Il faut d&#233;finir ici le Document Root. Par d&#233;faut il s&#039;agit de /Applications/MAMP/htdocs Mais on peut choisir un r&#233;pertoire n&#039;appartenant pas &#224; MAMP si on le souhaite, n&#039;importe o&#249; dans sa maisonnette d&#039;utilisateur mac. Traditionnellement, ceux qui n&#039;utilisent pas /Applications/MAMP/htdocs se servent du r&#233;pertoire Sites de leur dossier utilisateur /Users/user/Sites. L&#039;avantage de conserver en Document Root le r&#233;pertoire htdocs est que l&#039;on peut copier l&#039;application MAMP sur un autre mac et &#234;tre tout de suite op&#233;rationnel. On centralise en un m&#234;me endroit tous les &#233;l&#233;ments. Mais les autres choix de Document Root peuvent tout aussi bien se justifier et de d&#233;fendre. Il s&#039;agit donc du choix du document racine du serveur web, et c&#039;est l&#224; qu&#039;il conviendra de d&#233;poser tous ses r&#233;pertoires de sites web. {{- Cr&#233;er une base SQL :}} depuis l&#039;onglet PhpMyadmin, dans la case cr&#233;er une nouvelle base de donn&#233;es en entrant son nom. &lt;img10357&gt; Dans interclassement pour la connexion MySQL cocher utf8_general_ci et cliquer ensuite sur cr&#233;er. On pourra &#233;ventuellement cr&#233;er un user sp&#233;cifique pour cette base de donn&#233;e avec les privil&#232;ges qu&#039;il convient. Pour ce faire, cliquer sur l&#039;onglet Privil&#232;ges de PhpMyAdmin, puis cliquer sur ajouter un utilisateur et remplir les cases du formulaire. &lt;img10358&gt; [Structure&lt;-] {{{II/ Structure du MAMP}}} &lt;img10359&gt; MAMP.app sert &#224; lancer l&#039;application. Elle a &#233;t&#233; install&#233;e dans Applications, et elle devra imp&#233;rativement y rester. Les r&#233;pertoires principaux de MAMP sont les suivants : - /Applications/MAMP : r&#233;pertoire racine de l&#039;application MAMP - /Applications/MAMP/cgi-bin - /Applications/MAMP/library : on y mettra notamment le my.cnf - /Applications/MAMP/bin : r&#233;pertoire contenant les ex&#233;cutables d&#039;Apache, PHP4, PHP5, MySQL5 et SQLite. - /Applications/MAMP/conf : r&#233;pertoire contenant les fichiers de configuration d&#039;Apache (httpd.conf), et SQLiteManager (config.db). - /Applications/MAMP/tmp : r&#233;pertoire contenant les fichiers temporaires cr&#233;&#233;s par les ex&#233;cutables. Le r&#233;pertoire /tmp/php contient notamment les fichiers temporaires des sessions PHP. - /Applications/MAMP/db : r&#233;pertoire contenant les bases de donn&#233;es SQLite et MySQL. - /Applications/MAMP/logs : r&#233;pertoire contenant les fichiers de logs d&#039;erreurs de PHP, Apache et MySQL. - /Applications/MAMP/htdocs : r&#233;pertoire contenant les diff&#233;rents projets de sites Web si un autre dossier n&#039;a pas &#233;t&#233; s&#233;lectionn&#233;. [Reglages&lt;-] {{{III/ R&#233;glages de l&#039;interface}}} {{- Onglet Start}} Sur la page d&#039;accueil o&#249; dans l&#039;onglet start, se trouvent les informations importantes dont on a besoin pour configurer un CMS, &#224; savoir le h&#244;te : localhost, le port SQL : 8889, l&#039;user : root, le mot de passe : root {{- Onglet Phpinfo}} Toutes les informations au niveau de la configuration de PHP. On y trouve notamment les informations du traditionnel php.info, avec la version de PHP active, ici Version 5.3.6, le chemin du fichier php.ini, il peut changer selon les versions de MAMP, /Applications/MAMP/bin/php/php5.3.6/conf/php.ini. On pourra y lire les valeurs par d&#233;faut de max_execution_time &#224; 30 et de memory_limit &#224; 32M du php.ini qu&#039;il conviendra d&#039;augmenter d&#039;office pour une utilisation sereine de MAMP avec un CMS dont SPIP. {{- Onglet : Xcache}} On y touche pas. Je sais m&#234;me pas trop &#224; quoi &#231;a sert. {{- Onglet Phpmyadmin}} L&#039;interface de contr&#244;le de MySQL. {{- Onglet SQLiteManager}} l&#039;interface de contr&#244;le de SQLite pour ceux qui utilise du SQLlight nativement propos&#233; avec SPIP 3. M&#234;me si le manager nous semble beaucoup moins au point que le traditionnel Phpmyadmin. Nous continuons pour notre part &#224; utiliser MySQL avec SPIP 3. {{- Onglet Faq}} Foire aux questions en anglais {{- Onglet Try MAMP Pro}} On ne l&#039;abordera pas ici, mais nos diff&#233;rents r&#233;glages nous permettront d&#039;avoir plus ou moins les m&#234;mes options que la version Pro. [ReglageAvances&lt;-] {{{IV/ Les r&#233;glages avanc&#233;s et personnalis&#233;s}}} Voici quelques r&#233;glages et quelques &#233;l&#233;ments de personnalisation du MAMP &#224; faire pour travailler sereinement comme sur un vrai serveur d&#233;di&#233; mais en local. Toutes ne seront pas obligatoires, &#224; vous de voir selon vos besoins. {{1. Ajuster les valeurs de php.ini}} Il conviendra de modifier le php.ini de chacune des versions php propos&#233;es par MAMP. Le chemin vers le php.ini peut changer selon les versions de MAMP. Ne pas h&#233;siter &#224; faire dans le terminal ces lignes : &lt;code&gt; alexmacapple:~ alex$ cd /Applications/MAMP alexmacapple:~ alex$ alexmacapple:MAMP alex$ find / -name php.ini 2&gt;/dev/null &lt;/code&gt; Qui nous donnera les bons chemins : {/Applications/MAMP/bin/php/php5.2.17/conf/php.ini} {/Applications/MAMP/bin/php/php5.3.6/conf/php.ini} {{memory_limit set}} est &#224; 8MB par d&#233;faut dans MAMP, il conviendra de lui donner une valeur de 32 MB pour &#234;tre tranquille. Ce r&#233;glage l&#224; est imp&#233;ratif pour lancer confortablement un SPIP r&#233;cent sous peine d&#039;obtenir des erreurs de timeout. On pourra &#233;galement v&#233;rifier que {{max_execution_time}} est &#224; 30 MB On peut &#233;galement rajout&#233; ces lignes pour activer les erreurs php &lt;code&gt; error_reporting : E_ALL display_errors : On &lt;/code&gt; {{2. Cr&#233;er dans MAMP le fichier de configuration MySQL (my.cnf)}} Si vous avez besoin d&#039;ajuster vos param&#232;tres SQL, il conviendra de cr&#233;er un fichier {{my.cnf}} dans le r&#233;pertoire suivant /Applications/MAMP/Library/my.cnf Il faut copier et surcharger le fichier qui se trouve dans /Applications/MAMP/Library/support-files/my-&#173;medium.cnf et le placer dans le r&#233;pertoire /Applications/MAMP/Library/ et le renommer en my.cnf On peut le faire en ligne de commande &#224; l&#039;aide des lignes suivantes &lt;code&gt; sudo cp /Applications/MAMP/Library/support-&#173;files/my-&#173;medium.cnf /Applications/MAMP/Library/my.cnf &lt;/code&gt; Attention l&#039;emplacement peut changer selon les versions de MAMP utilis&#233;es. On peut sinon rechercher le fichier par le terminal en tapant les commandes pour voir s&#039;ils existent et o&#249; ils se trouvent : &lt;code&gt; find / -name my.cnf 2&gt;/dev/null find / -name my-medium.cnf 2&gt;/dev/null &lt;/code&gt; &#201;diter le fichier my.cnf et notamment modifiant la valeur de {{max_allowed_packet}} : passer de max_allowed_packet = 1M &#224; max_allowed_packet = 128M pourra nous &#234;tre d&#039;un grand secours dans le cas de tr&#232;s grosses bases de donn&#233;es. {{3. Utiliser MySQL en ligne de commande avec MAMP sans passer par PhpMyAdmin}} Il faut ouvrir le terminal, dans /applications/utilitaires/Terminal Et taper la commande suivante : &lt;code&gt; /Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot &lt;/code&gt; &lt;img10360&gt; On peut d&#232;s lors utiliser les commandes de MySQL. Taper par exemple : show databases ; &lt;img10361&gt; On peut aussi cr&#233;er un {{lien symbolique}} pour n&#039;avoir &#224; taper que mysql depuis le shell &lt;code&gt; sudo ln -s /Applications/MAMP/Library/bin/mysql /usr/local/bin/mysql &lt;/code&gt; Une autre m&#233;thode, alternative au lien symbolique, consiste &#224; cr&#233;er un fichier {{.profile}}, fichier cach&#233;, dans son r&#233;pertoire de home du mac /users/nom, de fa&#231;on &#224; y renseigner le PATH, &#224; savoir le chemin de recherche des fichiers ex&#233;cutables de MySQL &lt;code&gt; export PATH=/Applications/MAMP/Library/bin:$PATH &lt;/code&gt; &lt;img10362&gt; On peut taper . .profile dans le terminal pour relancer son profile &lt;code&gt; alexmacapple:~ alex $ . .profile &lt;/code&gt; puis &#233;cho $PATH pour s&#039;assurer que la ligne a bien &#233;t&#233; prise en compte &lt;code&gt; alexmacapple:~ alex$ echo $PATH &lt;/code&gt; On pourra alors d&#233;sormais taper un simple mysql -u root -p pour se connecter &#224; MySQL en ligne de commande Injecter un dump SQL : &lt;code&gt; mysql -uUSER -pPASS spip_db &lt; mabase_db.sql &lt;/code&gt; &lt;code&gt; cat Fichier.sql | mysql -uroot --password=root --database=nombase &lt;/code&gt; Faire un sauvegarde SQL &lt;code&gt; mysqldump --opt spip &gt; sauvegarde_spip.sql &lt;/code&gt; {{4. Changer le password de MySQL :}} Par d&#233;faut le login et le mot de passe de MySQL est root/root. Si vous n&#039;ouvrez pas le serveur MAMP vers l&#039;ext&#233;rieur, aucun souci, vous pouvez laisser comme cela. En revanche si vous voulez l&#039;ouvrir sur le monde ext&#233;rieur, et que votre serveur est accessible sur internet, il sera pr&#233;f&#233;rable de changer le mot de passe attribu&#233; par d&#233;faut pour des raisons de s&#233;curit&#233;. Pour changer le mot de passe MySQL, il faudra faire deux choses : 1. Utiliser la ligne de commande suivante dans le terminal &lt;code&gt; /Applications/MAMP/Library/bin/mysqladmin -u root -p password [NEWPASSWORD] &lt;/code&gt; 2. Prendre un &#233;diteur de texte pour modifier l&#039;ancien mot de passe &#224; quatre endroits diff&#233;rents : /Applications/MAMP/bin/phpMyAdmin-X.X.X/config.inc.php _ ligne 86 &lt;code&gt; $cfg[&#039;Servers&#039;][$i][&#039;password&#039;] = &#039;root&#039;; &lt;/code&gt; /Applications/MAMP/bin/mamp/index.php _ ligne 15 &lt;code&gt; $link = @mysql_connect(&#039;:/Applications/MAMP/tmp/mysql/mysql.sock&#039;, &#039;root&#039;, &#039;root&#039;); &lt;/code&gt; /Applications/MAMP/bin/stopMysql.sh _ Remplacer -proot par -pvotrepass On peut &#233;galement le changer dans la page d&#039;accueil de MAMP _ /Applications/MAMP/bin/mamp/French/mamp.inc.php ligne 16 et ligne 23 {{5. Ouvrir MAMP automatiquement au d&#233;marrage du mac}} Allez dans le menu pomme, puis Pr&#233;f&#233;rences Syst&#232;me &lt;img10363&gt; Puis dans l&#039;onglet compte/ouverture, rajouter MAMP en ouverture automatique de session &lt;img10364&gt; Cliquer sur ajouter &lt;img10365&gt; Et c&#039;est tout bon. Si votre mac s'&#233;teint, le MAMP s&#039;ouvrira automatiquement tout seul &#224; la prochaine ouverture. On peut m&#234;me, toujours dans les pr&#233;f&#233;rences system et dans l&#039;onglet &#233;conomiseur d&#039;&#233;nergie cocher la case d&#233;marrer automatiquement le mac apr&#232;s une panne de courant. &lt;img10366&gt; [MiseAJour&lt;-] {{{V/ Mettre &#224; jour sa version de MAMP en toute tranquillit&#233;, sans rien perdre de ses sites et de ses bases de donn&#233;es SQL}}} - 1. On quitte l&#039;application MAMP ce qui a pour effet d&#039;arr&#234;ter les serveurs Apache et MySQL, et on arr&#234;te les process pouvant tourner gr&#226;ce au moniteur d&#039;activit&#233;. - 2. On Quitte l&#039;application MAMP ce qui a pour effet d&#039;arr&#234;ter les serveurs Apache et SQL - 3. On renomme dans Applications le dossier MAMP en MAMP.old - 4. On lance la nouvelle installation de MAMP que l&#039;on aura au pr&#233;alable t&#233;l&#233;charg&#233;e sur le site officiel - 5. On va copier certaines donn&#233;es de MAMP.old dans MAMP : Copier le contenu du sous-dossier /htdocs vers MAMP (Si vos sites sont dans ce Document Root). Copier le contenu du sous-dossier /db/mysql vers MAMP (Mais pas les sous-dossiers mysql/, performance_schema/ et le fichier mysql_upgrade_info) - 6. Copier le fichier /conf/apache/httpd.conf vers MAMP si vous aviez modifi&#233; le fichier de conf (faire un diff pour voir ce qui a chang&#233; dans la nouvelle version et les r&#233;percuter) - 7. Copier le fichier /bin/php/[Votre version]/conf/php.ini vers MAMP si vous aviez modifi&#233; le fichier (faire un diff pour voir ce qui a chang&#233; dans la nouvelle version, r&#233;percuter notamment le memory limait) - 8. Relancer MAMP dans sa nouvelle version. La mise &#224; jour est termin&#233;e (Et si on est un brin para-no :-), on peut &#233;galement, avant de mettre a jour le MAMP, faire un backup manuel de toutes les bases sql dans PhpMyAdmin, mais de toute fa&#231;on pas de panique, on pourra toujours revenir &#224; son ancien MAMP en supprimant le .old et en renommant le nouveau MAMP, puis en fermant les process.) [Probleme&lt;-] {{{VI/ En cas de probl&#232;mes}}} Il est possible que le MySQL de votre version de MAMP parfois refuse de se lancer ou ne fonctionne plus. Il convient tout d&#039;abord de fermer MAMP. Il faut ensuite ouvrir le moniteur d&#039;activit&#233; (Applications/Utilitaires/Moniteur d&#039;activit&#233;/) et de fermer le ou les process sql qui pourraient &#234;tre en conflit. &lt;img10368&gt; On peut &#233;galement aller directement dans le terminal et taper le code suivant d&#039;un seul coup, m&#234;me si personnellement je pr&#233;f&#232;re la m&#233;thode avec le moniteur d&#039;activit&#233; qui liste pr&#233;cis&#233;ment les process SQL ouverts qui pourraient rentrer en conflit &lt;code&gt; ps aux | grep mysql lsof -i killall -9 mysqld &lt;/code&gt; On red&#233;marre ensuite le mac (pas obligatoire mais c&#039;est une bonne veille habitude), on ouvre le MAMP et les serveurs devraient red&#233;marrer. On peut aussi, par pr&#233;caution, bien que cela ne soit pas forc&#233;ment utile faire un chmod r&#233;cursif 777 sur MAMP pour &#233;carter tout probl&#232;me de permission (sinon Pomme i, et donner les droits en &#233;criture pour tous les r&#233;pertoires) &lt;code&gt; # sudo chmod -Rfv 777 /Applications/MAMP &lt;/code&gt; Lire la suite : [-&gt;art4048] &lt;/div&gt;&lt;!--.rss_texte--&gt;
		&lt;div class='raw_ps'&gt;Nous n&#039;avons pas abord&#233; ici la question de la mutualisation, car nous ne l&#039;avons jamais pratiqu&#233;, et surtout parce qu&#039;un tr&#232;s bon article fait par Ma&#239;eul existe d&#233;j&#224;. [-&gt;http://geekographie.maieul.net/Gerer-beaucoup-de-sites-SPIP-en]&lt;/div&gt;&lt;!--.rss_ps--&gt;

		</content:encoded>
]

		

	</item>



	<item>
		<title>Ouvrir MAMP sur l'ext&#233;rieur : Vhost, routeur, Domaine et DNS</title>
		<link>http://www.spip-contrib.net/Deuxieme-partie-Comment-creer-un-environnement-de</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Deuxieme-partie-Comment-creer-un-environnement-de</guid>
		<dc:date>2012-01-21T13:11:48Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Alexandra</dc:creator>

<category domain="http://www.spip-contrib.net/Developper-en-SPIP-sous-Mac-OS-X">D&#233;velopper en SPIP sous Mac OS X</category>

		<dc:subject>Licence GPL</dc:subject>
		<dc:subject>Toutes versions de SPIP</dc:subject>
		<dc:subject>Documentation</dc:subject>
		<dc:subject>Hors sommaire</dc:subject>
		<dc:subject>Webmestre</dc:subject>

		<description>
&lt;p&gt;Cet article est le deuxi&#232;me de la s&#233;rie : Comment cr&#233;er un environnement de travail pour d&#233;velopper du SPIP sur un MAC avec MAMP Ouvrir MAMP sur l'ext&#233;rieur : Vhost, routeur, Domaine et DNS Quelques outils pour d&#233;velopper du SPIP sous Mac Dans ce deuxi&#232;me article, nous aborderons comment ouvrir son serveur MAMP vers l'ext&#233;rieur comme un vrai serveur WEB. Un petit clin d'&#339;il &#224; XDjuj que je remercie :-) Plan de la deuxi&#232;me partie : Ouvrir MAMP sur l'ext&#233;rieur : Vhost, routeur, Domaine et DNS I/ (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Developper-en-SPIP-sous-Mac-OS-X" rel="directory"&gt;D&#233;velopper en SPIP sous Mac OS X&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/Licence-GPL" rel="tag"&gt;Licence GPL&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/+-Toutes-versions-de-SPIP-+" rel="tag"&gt;Toutes versions de SPIP&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Documentation,117" rel="tag"&gt;Documentation&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/+-Hors-sommaire-+" rel="tag"&gt;Hors sommaire&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Webmestre" rel="tag"&gt;Webmestre&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon1572.jpg?1326991940&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Cet article est le deuxi&#232;me de la s&#233;rie :
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Comment-creer-un-environnement-de-travail-pour,4050&quot; class=&#039;spip_in&#039;&gt;Comment cr&#233;er un environnement de travail pour d&#233;velopper du SPIP sur un MAC avec MAMP&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Deuxieme-partie-Comment-creer-un-environnement-de&quot; class=&#039;spip_in&#039;&gt;Ouvrir MAMP sur l'ext&#233;rieur : Vhost, routeur, Domaine et DNS&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Troisieme-partie-Comment-creer-un-environnement-de&quot; class=&#039;spip_in&#039;&gt;Quelques outils pour d&#233;velopper du SPIP sous Mac&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Dans ce deuxi&#232;me article, nous aborderons comment ouvrir son serveur MAMP vers l'ext&#233;rieur comme un vrai serveur WEB. Un petit clin d'&#339;il &#224; XDjuj que je remercie :-)&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt; Plan de la deuxi&#232;me partie : Ouvrir MAMP sur l'ext&#233;rieur : Vhost, routeur, Domaine et DNS&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href=&quot;#Host&quot; class=&#039;spip_ancre&#039;&gt;I/ Apache Serveur virtuel : Etc/hosts&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;#Routeur&quot; class=&#039;spip_ancre&#039;&gt;II/ Configurer son modem routeur&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;#Domaine&quot; class=&#039;spip_ancre&#039;&gt;III/ Configurer son domaine et ses zones DNS&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;#DomainePerso&quot; class=&#039;spip_ancre&#039;&gt;IV/ Un domaine personnalis&#233; pour chaque site avec la modification du fichier de configuration httpd.conf&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a name=&quot;Host&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;I/ Apache Serveur virtuel : Etc/hosts&lt;/h3&gt;
&lt;p&gt;Pour configurer Apache de mani&#232;re &#224; ce qu'il utilise des noms de domaine, il faut d'abord faire quelques op&#233;rations sur le mac.&lt;/p&gt; &lt;p&gt;Par d&#233;faut, le serveur Apache de MAMP est sur le port 8888. On peut laisser ce comportement ou obtenir quelque chose de plus standard.
L'adresse web locale est &lt;a href=&quot;http://localhost:8888/&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://localhost:8888&lt;/a&gt; au lieu de &lt;a href=&quot;http://localhost/&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://localhost&lt;/a&gt;.
Pour qu'Apache &#233;coute sur le port 80, aller dans les pr&#233;f&#233;rences de MAMP, cliquer sur l'onglet Ports. Choisir &#8220;Utiliser les param&#232;tres standards&#8221; et valider. Apr&#232;s le red&#233;marrage de MAMP, les serveurs Apache et MySQL fonctionnent de fa&#231;on classique.&lt;/p&gt; &lt;p&gt;Le fichier hosts du mac se trouve dans le r&#233;pertoire &lt;strong&gt;/etc/hosts&lt;/strong&gt;. Le r&#233;pertoire /etc est un dossier cach&#233; &#224; la racine du disque dur. Il conviendra d'avoir les droits pour &#233;diter le fichier hosts, sinon les modifications ne seront pas prise en compte.&lt;/p&gt; &lt;p&gt;Voici comment se pr&#233;sente le fichier hosts.
On Ajoute une nouvelle ligne avec l'ip local du serveur web : 127.0.0.1 et le nom de domaine que l'on a retenu monsiteamoi.com
Penser &#224; faire plusieurs espaces entre l'ip et le domaine&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;# localhost is used to configure the loopback interface&lt;br /&gt; # when the system is booting. Do not change this entry.&lt;br /&gt; ##&lt;br /&gt; 127.0.0.1 localhost&lt;br /&gt; 127.0.0.1 monsiteamoi.com&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Personnellement, dans mon vhost, j'ai quelque chose comme ceci&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;##&lt;br /&gt; # Host Database&lt;br /&gt; #&lt;br /&gt; # localhost is used to configure the loopback interface&lt;br /&gt; # when the system is booting. Do not change this entry.&lt;br /&gt; ##&lt;br /&gt; 127.0.0.1 localhost&lt;br /&gt; 127.0.0.1 88.161.2xx.2xx (mon adresse ip free sortante qui est fixe, et donc qui ne change pas toute les 24 h. Dans le cas d&#039;une ip dynamique pensez &#224; utiliser les dyndns.org)&lt;br /&gt; 127.0.0.1 mondomaine.info (mon domaine pour l&#039;ensemble de mon MAMP)&lt;br /&gt; 192.168.0.50 mondomaine.info (l&#039;ip interne de mon mac, &#233;quivalente &#224; 127.0.0.1 mais qui me permet d&#039;acc&#233;der au MAMP depuis mon &#233;mulation windows avec IE)&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Quand je tape &lt;a href=&quot;http://mondomaine.info:8888/MAMP&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://mondomaine.info:8888/MAMP&lt;/a&gt;, j'acc&#232;de &#224; mon MAMP parce que j'utilise le port 8888 sur le Document Root htdocs, et &lt;a href=&quot;http://mondomaine.info/&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://mondomaine.info&lt;/a&gt; renvoie sur le serveur web Apache du mac, activ&#233; quand on coche partage web depuis les pr&#233;f&#233;rences mac et le bouton partage.&lt;/p&gt; &lt;p&gt;Ouvrir un terminal en compte root, et taper cd /etc&lt;/p&gt; &lt;p&gt;On &#233;dite le fichier hosts avec l'&#233;diteur pico&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;alexmacapple:etc alex$ pico hosts&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;On descend avec les fl&#232;ches du clavier pour se positionner au bon endroit ; Contr&#244;le X pour quitter le mode &#233;dition ; Et on sauve les modifications en tapant Y pour Yes.&lt;/p&gt; &lt;p&gt;Pour les r&#233;calcitrants du terminal, ou pour ceux qui n'ont pas de compte super admin sur leur mac, on peut prendre l'&#233;diteur gratuit &lt;strong&gt;Textwrangler&lt;/strong&gt;, r&#233;cup&#233;rable &#224; cette adresse : &lt;a href=&quot;http://www.barebones.com/products/textwrangler/&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://www.barebones.com/products/t...&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Puis dans le fin-der du mac, dans le menu Aller, cliquer sur Aller au dossier&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10367 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L481xH193/aller-87c52.jpg&#039; width=&#039;481&#039; height=&#039;193&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;- Et taper dans la fen&#234;tre : Aller au dossier /etc/ puis valider en appuyant sur le bouton Aller
&lt;br /&gt;- Une fen&#234;tre s'ouvre avec le contenu de /etc/
&lt;br /&gt;- Clic droit sur le fichier hosts
&lt;br /&gt;- Ouvrir avec TextWrangler
&lt;br /&gt;- &#201;diter son hosts
&lt;br /&gt;- Une petite fen&#234;tre s'ouvre avec le message savant : &quot;Are you sure you want to unlock &quot;hosts&quot; .
&lt;br /&gt;- This document is owned by &quot;root&quot;.
&lt;br /&gt;- Cliquer sur Unlock
&lt;br /&gt;- Faire un pomme s pour enregistrer sa modification du vhost
&lt;br /&gt;- Une autre fen&#234;tre appara&#238;t qui nous demande le mot de passe de notre compte admin mac.
&lt;br /&gt;- On valide et c'est tout bon.&lt;/p&gt; &lt;p&gt;Dans ce cas de figure donc on a donc 1 domaine pour l'ensemble des sites web sous MAMP
&lt;br /&gt;- &lt;a href=&quot;http://mondomaine.info:8888/site1&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://mondomaine.info:8888/site1&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://mondomaine.info:8888/site2&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://mondomaine.info:8888/site2&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://mondomaine.info:8888/site3&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://mondomaine.info:8888/site3&lt;/a&gt;&lt;/p&gt; &lt;p&gt;site1, site2, et site3 &#233;tant des sous-r&#233;pertoires de htdocs d&#233;finis comme mon Document Root.&lt;/p&gt; &lt;p&gt;&lt;a name=&quot;Routeur&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;II/ Configurer son modem routeur&lt;/h3&gt;
&lt;p&gt;Les r&#233;glages pourront diff&#233;rer selon le type de modem : box, freebox neitgear etc &#8230; mais les principes de base restent identiques. &#192; vous de vous balader dans l'interface de votre routeur pour param&#233;trer et cocher les options qui conviennent.&lt;/p&gt; &lt;p&gt;En gros il vous faudra :
&lt;br /&gt;- Cocher le &lt;strong&gt;DMZ&lt;/strong&gt; sur pour votre ip local ce qui peut simplifier les choses : Serveur DMZ sur 192.168.0.2 (ip local de mon mac) mais ce n'est pas forc&#233;ment tr&#232;s s&#233;curis&#233; d'ouvrir sur tout.
&lt;br /&gt;- Sinon on pourra faire du sp&#233;cifique avec &lt;strong&gt;mappage de port&lt;/strong&gt; 80 ou 8888 de votre ip local du mac vers l'ip sortante du routeur.
&lt;br /&gt;- &lt;strong&gt;R&#233;server toujours la m&#234;me ip local&lt;/strong&gt; &#224; votre mac qui fait office de serveur web avec MAMP (r&#233;servation de plage ip)
&lt;br /&gt;- Actualisation du dyndns.org depuis le routeur si vous utilisez un domaine chez eux en cas d'ip dynamique. Certains modems offre ce type d'option
&lt;br /&gt;- On pourra &#233;galement selon le type de routeur ajouter des &lt;strong&gt;services personnalis&#233;s&lt;/strong&gt; et r&#233;gler certains param&#232;tres de pare-feu&lt;/p&gt; &lt;p&gt;Du temps ou j'utilisais un modem routeur &lt;strong&gt;Netgear chez Orange&lt;/strong&gt; voici les r&#233;glages que je faisais depuis l'interface du routeur (http://192.168.0.1) pour vous donner une petite id&#233;e. &#192; vous d'adapter selon votre routeur et les options qu'il vous propose :&lt;/p&gt; &lt;p&gt;- Toujours attribuer ip 192.168.0.2 d'apr&#232;s adresse mac Adresse MAC : d4:9a:20:5b:df:01 (Cf menu pomme/plus d'info/r&#233;seau pour avoir son ip local)
&lt;br /&gt;- Router les ports web 80 et 8888 sur 192.168.0.2
&lt;br /&gt;- Sinon option DMZ
# Activer Nom du service Action Adresse IP serveur LAN Utilisateurs WAN Journal HTTP Toujours AUTORISER 192.168.0.2 Tous Toujours MAMP Toujours AUTORISER 192.168.0.2 Tous Toujours&lt;/p&gt; &lt;p&gt;Depuis que je suis pass&#233;e sur &lt;strong&gt;la freebox avec Free&lt;/strong&gt;, voici les r&#233;glages que j'ai coch&#233;s dans l'interface freebox accessible en ligne depuis ce lien&lt;/p&gt; &lt;p&gt; &lt;a href=&quot;https://subscribe.free.fr/login/&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;https://subscribe.free.fr/login/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10369 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH228/free-6dfbc.jpg&#039; width=&#039;520&#039; height=&#039;228&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;- Activer le mode routeur de la freebox qui n'est pas actif par d&#233;faut
&lt;br /&gt;- Mappage des port 80 et 8888
&lt;br /&gt;- DMZ pour l'ip local de mon mac 192.168.0.10
&lt;br /&gt;- Notons que free offre aussi une page de personnalisation de reverse DNS que nous n'avons pas utilis&#233;, car nous avons g&#233;rer notre zone DNS depuis notre registar de domaine.&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10370 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH520/routeurfreebo-20d55.jpg&#039; width=&#039;520&#039; height=&#039;520&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;a name=&quot;Domaine&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;III/ Configurer son domaine et ses zones DNS&lt;/h3&gt;
&lt;p&gt;Chez mon registrar de domaine, je g&#232;re les DNS du domaine mondomaine.info de la sorte
&lt;br /&gt;- A mondomaine.info 88.161.2xx.2xx (mon ip free)
&lt;br /&gt;- A *.mondomaine.info 88.161.2xx.2xx (mon ip free pour g&#233;rer &#233;ventuellement n'importe quel sous domaine)
&lt;br /&gt;- CNAME &lt;a href=&quot;http://www.mondomaine.info/&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;www.mondomaine.info&lt;/a&gt; mondomaine.info&lt;/p&gt; &lt;p&gt;&lt;a name=&quot;DomainePerso&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;IV/ Un domaine personnalis&#233; pour chaque site avec la modification du fichier de configuration httpd.conf&lt;/h3&gt;
&lt;p&gt;Ce fichier se trouve dans /Applications/MAMP/conf/apache/httpd.conf&lt;/p&gt; &lt;p&gt;Il faut ajouter les lignes correspondantes au virtualhost du domaine qui doit planter sur un r&#233;pertoire site bien pr&#233;cis.&lt;/p&gt; &lt;p&gt;Attention penser &#224; mettre le m&#234;me port que celui d&#233;fini dans les options : 8888 ou 80
&quot;monsite&quot; correspond au r&#233;pertoire du dit site qui pointe sur le domaine.&lt;/p&gt; &lt;p&gt;Pensez &#224; remplacer &quot;monsite&quot; par le nom de votre r&#233;pertoire site et &quot;monsite.com&quot; par votre domaine choisi&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;&lt;VirtualHost 127.0.0.1:80&gt;&lt;br /&gt; DocumentRoot /Applications/MAMP/htdocs/&lt;br /&gt; ServerName localhost&lt;br /&gt; &lt;/VirtualHost&gt;&lt;br /&gt; &lt;VirtualHost 127.0.0.1:80&gt;&lt;br /&gt; DocumentRoot /Applications/MAMP/htdocs/monsite/&lt;br /&gt; ServerName monsite.com&lt;br /&gt; ServerAlias *.monsite.com&lt;br /&gt; &lt;Directory &quot;/Applications/MAMP/htdocs/monsite/&quot;&gt; &lt;br /&gt; Options Indexes FollowSymLinks MultiViews &lt;br /&gt; DirectoryIndex index.php index.html&lt;br /&gt; AllowOverride All&lt;br /&gt; Order allow,deny &lt;br /&gt; Allow from all &lt;br /&gt; &lt;/Directory&gt; &lt;br /&gt; &lt;/VirtualHost&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Enregistrez httpd.conf puis Arr&#234;ter et D&#233;marrer les Serveurs MAMP.&lt;/p&gt; &lt;p&gt;Lire la suite :
&lt;a href=&quot;http://www.spip-contrib.net/Troisieme-partie-Comment-creer-un-environnement-de&quot; class=&#039;spip_in&#039;&gt;Quelques outils pour d&#233;velopper du SPIP sous Mac&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Lire l'article pr&#233;c&#233;dent :
&lt;a href=&quot;http://www.spip-contrib.net/Comment-creer-un-environnement-de-travail-pour,4050&quot; class=&#039;spip_in&#039;&gt;Comment cr&#233;er un environnement de travail pour d&#233;velopper du SPIP sur un MAC avec MAMP&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;Cet article est le deuxi&#232;me de la s&#233;rie : - [-&gt;art4050] - [-&gt;art4048] - [-&gt;art4049] Dans ce deuxi&#232;me article, nous aborderons comment ouvrir son serveur MAMP vers l&#039;ext&#233;rieur comme un vrai serveur WEB. Un petit clin d&#039;&#339;il &#224; XDjuj que je remercie :-) &lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;{{ Plan de la deuxi&#232;me partie : Ouvrir MAMP sur l&#039;ext&#233;rieur : Vhost, routeur, Domaine et DNS}} - [I/ Apache Serveur virtuel : Etc/hosts-&gt;#Host] - [II/ Configurer son modem routeur-&gt;#Routeur] - [III/ Configurer son domaine et ses zones DNS-&gt;#Domaine] - [IV/ Un domaine personnalis&#233; pour chaque site avec la modification du fichier de configuration httpd.conf-&gt;#DomainePerso] [Host&lt;-] {{{I/ Apache Serveur virtuel : Etc/hosts}}} Pour configurer Apache de mani&#232;re &#224; ce qu&#039;il utilise des noms de domaine, il faut d&#039;abord faire quelques op&#233;rations sur le mac. Par d&#233;faut, le serveur Apache de MAMP est sur le port 8888. On peut laisser ce comportement ou obtenir quelque chose de plus standard. L&#039;adresse web locale est [-&gt;http://localhost:8888] au lieu de [-&gt;http://localhost]. Pour qu&#039;Apache &#233;coute sur le port 80, aller dans les pr&#233;f&#233;rences de MAMP, cliquer sur l&#039;onglet Ports. Choisir &#8220;Utiliser les param&#232;tres standards&#8221; et valider. Apr&#232;s le red&#233;marrage de MAMP, les serveurs Apache et MySQL fonctionnent de fa&#231;on classique. Le fichier hosts du mac se trouve dans le r&#233;pertoire {{/etc/hosts}}. Le r&#233;pertoire /etc est un dossier cach&#233; &#224; la racine du disque dur. Il conviendra d&#039;avoir les droits pour &#233;diter le fichier hosts, sinon les modifications ne seront pas prise en compte. Voici comment se pr&#233;sente le fichier hosts. On Ajoute une nouvelle ligne avec l&#039;ip local du serveur web: 127.0.0.1 et le nom de domaine que l&#039;on a retenu monsiteamoi.com Penser &#224; faire plusieurs espaces entre l&#039;ip et le domaine &lt;code&gt; # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1	localhost 127.0.0.1 monsiteamoi.com &lt;/code&gt; Personnellement, dans mon vhost, j&#039;ai quelque chose comme ceci &lt;code&gt; ## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1	localhost 127.0.0.1 88.161.2xx.2xx (mon adresse ip free sortante qui est fixe, et donc qui ne change pas toute les 24 h. Dans le cas d&#039;une ip dynamique pensez &#224; utiliser les dyndns.org) 127.0.0.1 mondomaine.info (mon domaine pour l&#039;ensemble de mon MAMP) 192.168.0.50 mondomaine.info (l&#039;ip interne de mon mac, &#233;quivalente &#224; 127.0.0.1 mais qui me permet d&#039;acc&#233;der au MAMP depuis mon &#233;mulation windows avec IE) &lt;/code&gt; Quand je tape [-&gt;http://mondomaine.info:8888/MAMP], j&#039;acc&#232;de &#224; mon MAMP parce que j&#039;utilise le port 8888 sur le Document Root htdocs, et [-&gt;http://mondomaine.info] renvoie sur le serveur web Apache du mac, activ&#233; quand on coche partage web depuis les pr&#233;f&#233;rences mac et le bouton partage. Ouvrir un terminal en compte root, et taper cd /etc On &#233;dite le fichier hosts avec l&#039;&#233;diteur pico &lt;code&gt; alexmacapple:etc alex$ pico hosts &lt;/code&gt; On descend avec les fl&#232;ches du clavier pour se positionner au bon endroit ; Contr&#244;le X pour quitter le mode &#233;dition ; Et on sauve les modifications en tapant Y pour Yes. Pour les r&#233;calcitrants du terminal, ou pour ceux qui n&#039;ont pas de compte super admin sur leur mac, on peut prendre l&#039;&#233;diteur gratuit {{Textwrangler}}, r&#233;cup&#233;rable &#224; cette adresse : [-&gt;http://www.barebones.com/products/textwrangler/] Puis dans le fin-der du mac, dans le menu Aller, cliquer sur Aller au dossier &lt;img10367&gt; - Et taper dans la fen&#234;tre : Aller au dossier /etc/ puis valider en appuyant sur le bouton Aller - Une fen&#234;tre s&#039;ouvre avec le contenu de /etc/ - Clic droit sur le fichier hosts - Ouvrir avec TextWrangler - &#201;diter son hosts - Une petite fen&#234;tre s&#039;ouvre avec le message savant : &quot;Are you sure you want to unlock &quot;hosts&quot; . - This document is owned by &quot;root&quot;. - Cliquer sur Unlock - Faire un pomme s pour enregistrer sa modification du vhost - Une autre fen&#234;tre appara&#238;t qui nous demande le mot de passe de notre compte admin mac. - On valide et c&#039;est tout bon. Dans ce cas de figure donc on a donc 1 domaine pour l&#039;ensemble des sites web sous MAMP - [-&gt;http://mondomaine.info:8888/site1] - [-&gt;http://mondomaine.info:8888/site2] - [-&gt;http://mondomaine.info:8888/site3] site1, site2, et site3 &#233;tant des sous-r&#233;pertoires de htdocs d&#233;finis comme mon Document Root. [Routeur&lt;-] {{{II/ Configurer son modem routeur}}} Les r&#233;glages pourront diff&#233;rer selon le type de modem : box, freebox neitgear etc &#8230; mais les principes de base restent identiques. &#192; vous de vous balader dans l&#039;interface de votre routeur pour param&#233;trer et cocher les options qui conviennent. En gros il vous faudra : - Cocher le {{DMZ}} sur pour votre ip local ce qui peut simplifier les choses : Serveur DMZ sur 192.168.0.2 (ip local de mon mac) mais ce n&#039;est pas forc&#233;ment tr&#232;s s&#233;curis&#233; d&#039;ouvrir sur tout. - Sinon on pourra faire du sp&#233;cifique avec {{mappage de port}} 80 ou 8888 de votre ip local du mac vers l&#039;ip sortante du routeur. - {{R&#233;server toujours la m&#234;me ip local}} &#224; votre mac qui fait office de serveur web avec MAMP (r&#233;servation de plage ip) - Actualisation du dyndns.org depuis le routeur si vous utilisez un domaine chez eux en cas d&#039;ip dynamique. Certains modems offre ce type d&#039;option - On pourra &#233;galement selon le type de routeur ajouter des {{services personnalis&#233;s}} et r&#233;gler certains param&#232;tres de pare-feu Du temps ou j&#039;utilisais un modem routeur {{Netgear chez Orange}} voici les r&#233;glages que je faisais depuis l&#039;interface du routeur (http://192.168.0.1) pour vous donner une petite id&#233;e. &#192; vous d&#039;adapter selon votre routeur et les options qu&#039;il vous propose : - Toujours attribuer ip 192.168.0.2 d&#039;apr&#232;s adresse mac Adresse MAC : d4:9a:20:5b:df:01 (Cf menu pomme/plus d&#039;info/r&#233;seau pour avoir son ip local) - Router les ports web 80 et 8888 sur 192.168.0.2 - Sinon option DMZ # Activer Nom du service Action Adresse IP serveur LAN Utilisateurs WAN Journal HTTP Toujours AUTORISER 192.168.0.2 Tous Toujours MAMP Toujours AUTORISER 192.168.0.2 Tous Toujours Depuis que je suis pass&#233;e sur {{la freebox avec Free}}, voici les r&#233;glages que j&#039;ai coch&#233;s dans l&#039;interface freebox accessible en ligne depuis ce lien [-&gt;https://subscribe.free.fr/login/] &lt;img10369&gt; - Activer le mode routeur de la freebox qui n&#039;est pas actif par d&#233;faut - Mappage des port 80 et 8888 - DMZ pour l&#039;ip local de mon mac 192.168.0.10 - Notons que free offre aussi une page de personnalisation de reverse DNS que nous n&#039;avons pas utilis&#233;, car nous avons g&#233;rer notre zone DNS depuis notre registar de domaine. &lt;img10370&gt; [Domaine&lt;-] {{{III/ Configurer son domaine et ses zones DNS}}} Chez mon registrar de domaine, je g&#232;re les DNS du domaine mondomaine.info de la sorte - A mondomaine.info 88.161.2xx.2xx (mon ip free) - A *.mondomaine.info 88.161.2xx.2xx (mon ip free pour g&#233;rer &#233;ventuellement n&#039;importe quel sous domaine) - CNAME www.mondomaine.info mondomaine.info [DomainePerso&lt;-] {{{IV/ Un domaine personnalis&#233; pour chaque site avec la modification du fichier de configuration httpd.conf}}} Ce fichier se trouve dans /Applications/MAMP/conf/apache/httpd.conf Il faut ajouter les lignes correspondantes au virtualhost du domaine qui doit planter sur un r&#233;pertoire site bien pr&#233;cis. Attention penser &#224; mettre le m&#234;me port que celui d&#233;fini dans les options : 8888 ou 80 &quot;monsite&quot; correspond au r&#233;pertoire du dit site qui pointe sur le domaine. Pensez &#224; remplacer &quot;monsite&quot; par le nom de votre r&#233;pertoire site et &quot;monsite.com&quot; par votre domaine choisi &lt;code&gt; &lt;VirtualHost 127.0.0.1:80&gt; DocumentRoot /Applications/MAMP/htdocs/ ServerName localhost &lt;/VirtualHost&gt; &lt;VirtualHost 127.0.0.1:80&gt; DocumentRoot /Applications/MAMP/htdocs/monsite/ ServerName monsite.com ServerAlias *.monsite.com &lt;Directory &quot;/Applications/MAMP/htdocs/monsite/&quot;&gt; Options Indexes FollowSymLinks MultiViews DirectoryIndex index.php index.html AllowOverride All Order allow,deny Allow from all &lt;/Directory&gt; &lt;/VirtualHost&gt; &lt;/code&gt; Enregistrez httpd.conf puis Arr&#234;ter et D&#233;marrer les Serveurs MAMP. Lire la suite : [-&gt;art4049] Lire l&#039;article pr&#233;c&#233;dent : [-&gt;art4050] &lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		

	</item>



	<item>
		<title>Quelques outils pour d&#233;velopper du SPIP sous Mac</title>
		<link>http://www.spip-contrib.net/Troisieme-partie-Comment-creer-un-environnement-de</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Troisieme-partie-Comment-creer-un-environnement-de</guid>
		<dc:date>2012-01-21T13:11:32Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Alexandra</dc:creator>

<category domain="http://www.spip-contrib.net/Developper-en-SPIP-sous-Mac-OS-X">D&#233;velopper en SPIP sous Mac OS X</category>

		<dc:subject>Licence GPL</dc:subject>
		<dc:subject>Toutes versions de SPIP</dc:subject>
		<dc:subject>Documentation</dc:subject>
		<dc:subject>Hors sommaire</dc:subject>
		<dc:subject>Webmestre</dc:subject>

		<description>
&lt;p&gt;Cet article est le troisi&#232;me de la s&#233;rie : Comment cr&#233;er un environnement de travail pour d&#233;velopper du SPIP sur un MAC avec MAMP Ouvrir MAMP sur l'ext&#233;rieur : Vhost, routeur, Domaine et DNS Quelques outils pour d&#233;velopper du SPIP sous Mac Dans ce troisi&#232;me article, nous aborderons d'autres outils qui pourront vous &#234;tre d'une aide pr&#233;cieuse sous Mac Os X. Un petit clin d'&#339;il &#224; XDjuj que je remercie et &#224; Kent1 :-) Plan de la troisi&#232;me partie : outils diverses I/ Installer Postfix pour pouvoir (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Developper-en-SPIP-sous-Mac-OS-X" rel="directory"&gt;D&#233;velopper en SPIP sous Mac OS X&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/Licence-GPL" rel="tag"&gt;Licence GPL&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/+-Toutes-versions-de-SPIP-+" rel="tag"&gt;Toutes versions de SPIP&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Documentation,117" rel="tag"&gt;Documentation&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/+-Hors-sommaire-+" rel="tag"&gt;Hors sommaire&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/Webmestre" rel="tag"&gt;Webmestre&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon1572.jpg?1326991940&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Cet article est le troisi&#232;me de la s&#233;rie :
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Comment-creer-un-environnement-de-travail-pour,4050&quot; class=&#039;spip_in&#039;&gt;Comment cr&#233;er un environnement de travail pour d&#233;velopper du SPIP sur un MAC avec MAMP&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Deuxieme-partie-Comment-creer-un-environnement-de&quot; class=&#039;spip_in&#039;&gt;Ouvrir MAMP sur l'ext&#233;rieur : Vhost, routeur, Domaine et DNS&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Troisieme-partie-Comment-creer-un-environnement-de&quot; class=&#039;spip_in&#039;&gt;Quelques outils pour d&#233;velopper du SPIP sous Mac&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Dans ce troisi&#232;me article, nous aborderons d'autres outils qui pourront vous &#234;tre d'une aide pr&#233;cieuse sous Mac Os X. Un petit clin d'&#339;il &#224; XDjuj que je remercie et &#224; Kent1 :-)&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt; Plan de la troisi&#232;me partie : outils diverses&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;- &lt;a href=&quot;#Postfix&quot; class=&#039;spip_ancre&#039;&gt;I/ Installer Postfix pour pouvoir envoyer des mails depuis le serveur&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;#Subversion&quot; class=&#039;spip_ancre&#039;&gt;II/ Installer subversion sous mac pour pouvoir versionner ses projets&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;#Homebrew&quot; class=&#039;spip_ancre&#039;&gt;III/ Installer Homebrew&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a name=&quot;Postfix&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;I/ Installer Postfix pour pouvoir envoyer des mails depuis le serveur&lt;/h3&gt;
&lt;p&gt;Il faut aller dans /etc/postfix puis trouver le fichier main.cf qui est le fichier de configuration du postfix&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;alexmacapple:~ alex$ cd /etc/postfix/&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Pour visualiser le fichier avant de l'&#233;diter avec pico :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;alexmacapple:postfix alex$ cat main.cf&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;alexmacapple : alex$ pico main.cf&lt;/p&gt; &lt;p&gt;Il convient de changer les lignes 69, 77 et 305&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;# INTERNET HOST AND DOMAIN NAMES&lt;br /&gt;
Ligne 69 : myhostname = mondomaine.com&lt;br /&gt;
Ligne 77 : mydomain = mondomaine.com&lt;br /&gt;
Et ligne 305 : mettre le smtp et le port de son FAI internet&lt;br /&gt;
ex : pour free et pour orange&lt;br /&gt;
relayhost = [smtp.orange.fr]:25&lt;br /&gt;
relayhost = [smtp.free.fr]:25&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Il faudra ensuite reloader son Postfix avec la commande suivante :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;alexmacapple:~ alex$ postfix alex$ sudo postfix reload&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Notons &#233;galement les commandes pro arr&#234;ter ou d&#233;marrer postfix :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;alexmacapple:~ alex$ sudo postfix start&lt;br /&gt;
alexmacapple:~ alex$ sudo postfix stop&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;ou peut tester la fonction d'envoi de mail depuis un shell pour v&#233;rifier que cela fonctionne en tapant le code suivant en prenant soin de remplacer l'&#233;mail par votre adresse &#233;mail&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;alexmacapple:~ alex$ echo &quot;12h03&quot; | mail -s &quot;12h03&quot; alexandra.guiderdoni@gmail.com&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;On pourra &#233;galement tester que la fonction php d'envoi de mail est bien active, en cr&#233;ant un fichier mail.php dans Applications/MAMP/htdocs/monsite/mail.php
et mettre dedans cette petite ligne de code en rempla&#231;ant par votre &#233;mail&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;&lt;?php&lt;br /&gt;
mail(&#039;alexandra@guiderdoni.net&#039;,&#039;[Mail Serveur]&#039;,&#039;Pourquoi &#231;a ne marcherait pas ? :)&#039;,&quot;From: \&quot;guiderdoni.net\&quot; &lt;alexandra@guiderdoni.net&gt;&quot;);&lt;br /&gt;
echo &quot;Le mail est parti ! (ou pas...)&quot;;&lt;br /&gt;
?&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;a name=&quot;Subversion&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;II/ Installer subversion sous mac pour pouvoir versionner ses projets &lt;/h3&gt;
&lt;p&gt;Subversion est un logiciel de gestion de sources et de contr&#244;le de versions. Ce type de programmes a plusieurs fonctions, notamment :&lt;/p&gt; &lt;p&gt;- garder un historique des diff&#233;rentes versions des fichiers d'un projet
&lt;br /&gt;- permettre le retour &#224; une version ant&#233;rieure
&lt;br /&gt;- garder un historique des modifications
&lt;br /&gt;- permettre un acc&#232;s souple &#224; ces fichiers, en local ou via un r&#233;seau
&lt;br /&gt;- permettre &#224; des utilisateurs distincts et souvent distants de travailler ensemble&lt;/p&gt; &lt;p&gt;Plusieurs paquets sont disponibles pour mac, mais je crois que le pacquage de Collabnet est le plus r&#233;cent. &lt;a href=&quot;http://www.open.collab.net/downloads/community/&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://www.open.collab.net/download...&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Il faut lire le read-me du fichier d'installation qui indique le bon pat de subversion&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;export PATH=/opt/subversion/bin:$PATH&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Et il faut l'&#233;diter dans le fichier .profile, fichier cach&#233;, &#224; cr&#233;er si besoin dans votre r&#233;pertoire de home utilisateur&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;alexmacapple:~ alex$ cat .profile&lt;br /&gt;
export PATH=/opt/subversion/bin:/Applications/MAMP/Library/bin:$PATH&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Vous pourrez donc ensuite utiliser le terminal pour taper vos commandes SVN :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;alexmacapple:~ alex$ cd /Applications/MAMP/htdocs/monsitespip&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;puis taper cette ligne pour r&#233;cup&#233;rer la version stable de la branche SVN :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;alexmacapple:~ alex$ svn co svn://trac.rezo.net/spip/branches/spip-2-stable .&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Aller dans le r&#233;pertoire plugin pour r&#233;cup&#233;rer ceux qui vous int&#233;ressent :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;cd plugins&lt;br /&gt;
svn checkout svn://zone.spip.org/spip-zone/_plugins_/cfg&lt;br /&gt;
svn checkout svn://zone.spip.org/spip-zone/_plugins_/spip-bonux-2&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;vous pourrez par exemple taper ces commandes pour mettre &#224; jour votre site et vider les caches&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;svn up&lt;br /&gt;
cd plugins&lt;br /&gt;
svn up *&lt;br /&gt;
cd ../extensions&lt;br /&gt;
svn up *&lt;br /&gt;
cd ../trunk&lt;br /&gt;
svn up&lt;br /&gt;
cd ../tmp&lt;br /&gt;
rm *.php&lt;br /&gt;
cd cache&lt;br /&gt;
rm -r *&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Et pour les r&#233;calcitrants du terminal et de la ligne de commande, vous avez SvnX en client SVN gratuit pour mac. Je vous renvoie &#224; un article de 2007, publi&#233; sur SPIP-ZINE :&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://zine.spip.org/spip.php?article44&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://zine.spip.org/spip.php?article44&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Il faudra juste prendre les paquets plus r&#233;cents de subversion et la version plus r&#233;cente de SvnX.&lt;/p&gt; &lt;p&gt;&lt;a name=&quot;Homebrew&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;III/ Installer Homebrew&lt;/h3&gt;
&lt;p&gt;Il s'agit d'un syst&#232;me de paquets Unix pour Mac OS X.
Le site officiel se trouve &#224; cette URL : &lt;a href=&quot;http://mxcl.github.com/homebrew/&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;http://mxcl.github.com/homebrew/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;En pr&#233;requis de l'installation de Homebrew, vous devez vous assurez que :
&lt;br /&gt;- votre processeur est un Intel
&lt;br /&gt;- vous tournez sur un mac os X.5 ou plus &#233;l&#233;v&#233;
&lt;br /&gt;- Xcode est install&#233; sur votre mac avec X11 (t&#233;l&#233;chargeable sur le site d'Apple, sinon pr&#233;sent dans votre disque d'installation de Mac OS X).
&lt;br /&gt;- Et que vous avez bien Java Developer Update&lt;/p&gt; &lt;p&gt;Pour plus d'information, &lt;a href=&quot;https://github.com/mxcl/homebrew/wiki/installation&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;https://github.com/mxcl/homebrew/wi...&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Pour l'installer, ouvrir un terminal et taper le code suivant :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;/usr/bin/ruby -e &quot;$(curl -fsSL https://raw.github.com/gist/323731)&quot;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;span class=&#039;spip_document_10372 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH299/homebre-bbeb2.jpg&#039; width=&#039;520&#039; height=&#039;299&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Homebrew s'est donc install&#233; dans /usr/local.&lt;/p&gt; &lt;p&gt;Pour installer un paquet, comme &lt;strong&gt;GIT&lt;/strong&gt; par exemple, il suffit de taper dans un shell la commande suivante :&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;brew install git&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Puis pour mettre &#224; jour&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;brew update&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;span class=&#039;spip_document_10373 spip_documents&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH363/git-0acc2.jpg&#039; width=&#039;520&#039; height=&#039;363&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Git est un syst&#232;me de contr&#244;le de version qui vous de garder une trace de toutes les modifications que l'on fait quand on travaille sur un projet. C'est une alternative &#224; subversion.&lt;/p&gt; &lt;p&gt;On peut de la m&#234;me mani&#232;re installer la pr&#233;cieuse commande &lt;strong&gt;WGET&lt;/strong&gt;&lt;/p&gt;
&lt;div style=&#039;text-align: left;&#039; class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;brew install wget&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;WGET, inclus dans la plupart des distributions GNU/Linux, est un superbe outil de t&#233;l&#233;chargement, qui permet le t&#233;l&#233;chargement r&#233;cursif, la r&#233;cup&#233;ration d'un seul type de fichier, la reprise d'un t&#233;l&#233;chargement interrompu ... C'est une commande tr&#232;s puissante avec pleins d'options.&lt;/p&gt; &lt;p&gt;On trouvera la liste compl&#232;te des paquets de Homebrew ici :
&lt;a href=&quot;https://github.com/mxcl/homebrew/tree/master/Library/Formula/&quot; class=&#039;spip_url spip_out&#039; rel=&#039;external&#039;&gt;https://github.com/mxcl/homebrew/tr...&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Lire les articles pr&#233;c&#233;dents :
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Comment-creer-un-environnement-de-travail-pour,4050&quot; class=&#039;spip_in&#039;&gt;Comment cr&#233;er un environnement de travail pour d&#233;velopper du SPIP sur un MAC avec MAMP&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Deuxieme-partie-Comment-creer-un-environnement-de&quot; class=&#039;spip_in&#039;&gt;Ouvrir MAMP sur l'ext&#233;rieur : Vhost, routeur, Domaine et DNS&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;Cet article est le troisi&#232;me de la s&#233;rie : - [-&gt;art4050] - [-&gt;art4048] - [-&gt;art4049] Dans ce troisi&#232;me article, nous aborderons d&#039;autres outils qui pourront vous &#234;tre d&#039;une aide pr&#233;cieuse sous Mac Os X. Un petit clin d&#039;&#339;il &#224; XDjuj que je remercie et &#224; Kent1 :-)&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;{{ Plan de la troisi&#232;me partie : outils diverses}} - [I/ Installer Postfix pour pouvoir envoyer des mails depuis le serveur-&gt;#Postfix]
- [II/ Installer subversion sous mac pour pouvoir versionner ses projets-&gt;#Subversion]
- [III/ Installer Homebrew-&gt;#Homebrew] [Postfix&lt;-] {{{I/ Installer Postfix pour pouvoir envoyer des mails depuis le serveur}}} Il faut aller dans /etc/postfix puis trouver le fichier main.cf qui est le fichier de configuration du postfix &lt;code&gt;
alexmacapple:~ alex$ cd /etc/postfix/
&lt;/code&gt; Pour visualiser le fichier avant de l&#039;&#233;diter avec pico : &lt;code&gt;
alexmacapple:postfix alex$ cat main.cf
&lt;/code&gt;
alexmacapple:~ alex$ pico main.cf Il convient de changer les lignes 69, 77 et 305 &lt;code&gt;
# INTERNET HOST AND DOMAIN NAMES
Ligne 69 : myhostname = mondomaine.com
Ligne 77 : mydomain = mondomaine.com
Et ligne 305 : mettre le smtp et le port de son FAI internet
ex : pour free et pour orange
relayhost = [smtp.orange.fr]:25
relayhost = [smtp.free.fr]:25
&lt;/code&gt; Il faudra ensuite reloader son Postfix avec la commande suivante : &lt;code&gt;
alexmacapple:~ alex$ postfix alex$ sudo postfix reload
&lt;/code&gt; Notons &#233;galement les commandes pro arr&#234;ter ou d&#233;marrer postfix : &lt;code&gt;
alexmacapple:~ alex$ sudo postfix start
alexmacapple:~ alex$ sudo postfix stop
&lt;/code&gt; ou peut tester la fonction d&#039;envoi de mail depuis un shell pour v&#233;rifier que cela fonctionne en tapant le code suivant en prenant soin de remplacer l'&#233;mail par votre adresse &#233;mail &lt;code&gt;
alexmacapple:~ alex$ echo &quot;12h03&quot; | mail -s &quot;12h03&quot; alexandra.guiderdoni@gmail.com
&lt;/code&gt; On pourra &#233;galement tester que la fonction php d&#039;envoi de mail est bien active, en cr&#233;ant un fichier mail.php dans Applications/MAMP/htdocs/monsite/mail.php
et mettre dedans cette petite ligne de code en rempla&#231;ant par votre &#233;mail &lt;code&gt;
&lt;?php
mail(&#039;alexandra@guiderdoni.net&#039;,&#039;[Mail Serveur]&#039;,&#039;Pourquoi &#231;a ne marcherait pas ? :)&#039;,&quot;From: \&quot;guiderdoni.net\&quot; &lt;alexandra@guiderdoni.net&gt;&quot;);
echo &quot;Le mail est parti ! (ou pas...)&quot;;
?&gt;
&lt;/code&gt; [Subversion&lt;-] {{{II/ Installer subversion sous mac pour pouvoir versionner ses projets }}} Subversion est un logiciel de gestion de sources et de contr&#244;le de versions. Ce type de programmes a plusieurs fonctions, notamment : - garder un historique des diff&#233;rentes versions des fichiers d&#039;un projet
- permettre le retour &#224; une version ant&#233;rieure
- garder un historique des modifications
- permettre un acc&#232;s souple &#224; ces fichiers, en local ou via un r&#233;seau
- permettre &#224; des utilisateurs distincts et souvent distants de travailler ensemble Plusieurs paquets sont disponibles pour mac, mais je crois que le pacquage de Collabnet est le plus r&#233;cent. [-&gt;http://www.open.collab.net/downloads/community/] Il faut lire le read-me du fichier d&#039;installation qui indique le bon pat de subversion &lt;code&gt;
export PATH=/opt/subversion/bin:$PATH
&lt;/code&gt; Et il faut l&#039;&#233;diter dans le fichier .profile, fichier cach&#233;, &#224; cr&#233;er si besoin dans votre r&#233;pertoire de home utilisateur &lt;code&gt;
alexmacapple:~ alex$ cat .profile
export PATH=/opt/subversion/bin:/Applications/MAMP/Library/bin:$PATH
&lt;/code&gt; Vous pourrez donc ensuite utiliser le terminal pour taper vos commandes SVN : &lt;code&gt;
alexmacapple:~ alex$ cd /Applications/MAMP/htdocs/monsitespip
&lt;/code&gt; puis taper cette ligne pour r&#233;cup&#233;rer la version stable de la branche SVN : &lt;code&gt;
alexmacapple:~ alex$ svn co svn://trac.rezo.net/spip/branches/spip-2-stable .
&lt;/code&gt; Aller dans le r&#233;pertoire plugin pour r&#233;cup&#233;rer ceux qui vous int&#233;ressent : &lt;code&gt;
cd plugins
svn checkout svn://zone.spip.org/spip-zone/_plugins_/cfg
svn checkout svn://zone.spip.org/spip-zone/_plugins_/spip-bonux-2
&lt;/code&gt; vous pourrez par exemple taper ces commandes pour mettre &#224; jour votre site et vider les caches &lt;code&gt;
svn up
cd plugins
svn up *
cd ../extensions
svn up *
cd ../trunk
svn up
cd ../tmp
rm *.php
cd cache
rm -r *
&lt;/code&gt; Et pour les r&#233;calcitrants du terminal et de la ligne de commande, vous avez SvnX en client SVN gratuit pour mac. Je vous renvoie &#224; un article de 2007, publi&#233; sur SPIP-ZINE : [-&gt;http://zine.spip.org/spip.php?article44] Il faudra juste prendre les paquets plus r&#233;cents de subversion et la version plus r&#233;cente de SvnX. [Homebrew&lt;-] {{{III/ Installer Homebrew}}} Il s&#039;agit d&#039;un syst&#232;me de paquets Unix pour Mac OS X.
Le site officiel se trouve &#224; cette URL : [-&gt;http://mxcl.github.com/homebrew/] En pr&#233;requis de l&#039;installation de Homebrew, vous devez vous assurez que :
- votre processeur est un Intel
- vous tournez sur un mac os X.5 ou plus &#233;l&#233;v&#233;
- Xcode est install&#233; sur votre mac avec X11 (t&#233;l&#233;chargeable sur le site d&#039;Apple, sinon pr&#233;sent dans votre disque d&#039;installation de Mac OS X).
- Et que vous avez bien Java Developer Update Pour plus d&#039;information, [-&gt;https://github.com/mxcl/homebrew/wiki/installation] Pour l&#039;installer, ouvrir un terminal et taper le code suivant : &lt;code&gt;
/usr/bin/ruby -e &quot;$(curl -fsSL https://raw.github.com/gist/323731)&quot;
&lt;/code&gt; &lt;img10372&gt; Homebrew s&#039;est donc install&#233; dans /usr/local. Pour installer un paquet, comme {{GIT}} par exemple, il suffit de taper dans un shell la commande suivante : &lt;code&gt;
brew install git
&lt;/code&gt; Puis pour mettre &#224; jour &lt;code&gt;
brew update
&lt;/code&gt; &lt;img10373&gt; Git est un syst&#232;me de contr&#244;le de version qui vous de garder une trace de toutes les modifications que l&#039;on fait quand on travaille sur un projet. C&#039;est une alternative &#224; subversion. On peut de la m&#234;me mani&#232;re installer la pr&#233;cieuse commande {{WGET}} &lt;code&gt;
brew install wget
&lt;/code&gt; WGET, inclus dans la plupart des distributions GNU/Linux, est un superbe outil de t&#233;l&#233;chargement, qui permet le t&#233;l&#233;chargement r&#233;cursif, la r&#233;cup&#233;ration d&#039;un seul type de fichier, la reprise d&#039;un t&#233;l&#233;chargement interrompu ... C&#039;est une commande tr&#232;s puissante avec pleins d&#039;options. On trouvera la liste compl&#232;te des paquets de Homebrew ici :
[-&gt;https://github.com/mxcl/homebrew/tree/master/Library/Formula/] Lire les articles pr&#233;c&#233;dents :
- [-&gt;art4050]
- [-&gt;art4048] &lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		

	</item>



	<item>
		<title>Tutoriel : produire sa propre structure de livre</title>
		<link>http://www.spip-contrib.net/Tutoriel-produire-sa-propre-structure-de-livre</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Tutoriel-produire-sa-propre-structure-de-livre</guid>
		<dc:date>2012-01-20T14:07:37Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>

<category domain="http://www.spip-contrib.net/Livre-avec-SPIP">Livre avec SPIP</category>

		<dc:subject>Hors sommaire</dc:subject>
		<dc:subject>SPIP 3.0</dc:subject>

		<description>
&lt;p&gt;La structure propos&#233;e ne vous convient pas ? Il est possible de produire les fichiers .tex correspondant &#224; vos besoins. Pour ce faire, c'est enti&#232;rement des boucles SPIP, avec une API sp&#233;ciale. Ceci est donc une documentation d&#233;vellopeur. Pour &#234;tre comprise, elle n&#233;cessite des comp&#233;tences : En SPIP En LaTeX Les diff&#233;rent &#233;l&#232;ments de l'API Le plugin latexwheel propose des r&#232;gles de transformation des raccourcis SPIP en code LaTeX. Il se base sur TextWheel. Le plugin ZipTeX, qui se base sur le (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Livre-avec-SPIP" rel="directory"&gt;Livre avec SPIP&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/+-Hors-sommaire-+" rel="tag"&gt;Hors sommaire&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-3-0" rel="tag"&gt;SPIP 3.0&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon1568.png?1326819038&quot; width=&quot;800&quot; height=&quot;800&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;La structure propos&#233;e ne vous convient pas ? Il est possible de produire les fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; correspondant &#224; vos besoins.&lt;/p&gt; &lt;p&gt;Pour ce faire, c'est enti&#232;rement des boucles SPIP, avec une API sp&#233;ciale.&lt;/p&gt; &lt;p&gt;Ceci est donc une documentation d&#233;vellopeur. Pour &#234;tre comprise, elle n&#233;cessite des comp&#233;tences :
&lt;br /&gt;- En SPIP
&lt;br /&gt;- En LaTeX&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Les diff&#233;rent &#233;l&#232;ments de l'API&lt;/h3&gt;
&lt;p&gt;- Le plugin latexwheel propose des r&#232;gles de transformation des raccourcis SPIP en code LaTeX. &lt;a href=&quot;http://zzz.rezo.net/Presentation-de-Textwheel.html&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;Il se base sur TextWheel&lt;/a&gt;.
&lt;br /&gt;- Le plugin ZipTeX, qui se base sur le plugin &lt;a href=&quot;http://www.spip-contrib.net/Zippeur&quot; class=&#039;spip_in&#039;&gt;Zippeur&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Cet article se veut un tutoriel visant &#224; montrer comment se servir de ces deux plugins pour cr&#233;er sa propre structure de liste avec SPIP.&lt;/p&gt; &lt;p&gt;Deux articles plus d&#233;taill&#233;s donnent les d&#233;tails de l'API.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Exemple de la structure prise&lt;/h3&gt;
&lt;p&gt;La structure sera simple : il s'agira dans un livre de regrouper &lt;strong&gt;tout&lt;/strong&gt; les articles d'une rubrique. Par exemple, la rubrique &lt;i&gt;&#233;ditoriale&lt;/i&gt;, en les classant par ordre chronologique, en mettant &#224; chaque fois le titre, suivi de la date, du chapo, du corps du texte, puis de la signature des auteurs.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Organisation finale de notre Zip&lt;/h3&gt;
&lt;p&gt;Il est possible en LaTeX de diviser un projet en plusieurs fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;, un peu comme on ferait en SPIP &lt;a href=&quot;http://programmer.spip.org/Inclure-des-squelettes&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;avec des squelettes inclus&lt;/a&gt;, via &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;INCLURE&gt;&lt;/code&gt; ou &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;#INCLURE&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Dans cette logique, le but est que SPIP produise un fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;livre.tex&lt;/code&gt;, qui appelle lui-m&#234;me des des fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;inclure/articlexxx.html&lt;/code&gt; correspondant &#224; chaque article. L'ensemble de ces fichiers &#233;tant regroup&#233;s dans un fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.zip&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Pour les besoins de l'exercice, nous nous servirons de la base de donn&#233;e sqlite jointe&lt;span class=&quot;spip_note_ref&quot;&gt; [&lt;a href=&#039;#nb2-1&#039; class=&#039;spip_note&#039; rel=&#039;footnote&#039; title=&#039;Le niveau intellectuel qui est y pr&#233;sent n'engage pas son auteur, qui avait (...)&#039; id=&#039;nh2-1&#039;&gt;1&lt;/a&gt;]&lt;/span&gt;. L'identifiant pour se connecter est &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;auteur&lt;/code&gt; et le mot de passe est &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;demodemo&lt;/code&gt;.&lt;/p&gt;
&lt;dl class=&#039;spip_document_10349 spip_documents spip_documents_right&#039; style=&#039;float:right;&#039;&gt;
&lt;dt&gt;&lt;a href=&quot;http://www.spip-contrib.net/IMG/zip/mu_livredem96a2.sqlite.zip&quot; title=&#039;Zip - 81&#160;ko&#039; type=&quot;application/zip&quot;&gt;&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L52xH52/zip-8890c.png&#039; width=&#039;52&#039; height=&#039;52&#039; alt=&#039;Zip - 81&#160;ko&#039; style=&#039;&#039; /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class=&#039;crayon document-titre-10349 spip_doc_titre&#039; style=&#039;width:120px;&#039;&gt;&lt;strong&gt;Base de donn&#233;e exemple&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Nous supposerons qu'il n'y a ni images dans nos articles, ni code informatique, ni liens. L'article d&#233;taill&#233; sur l'API fournit les outils pour les int&#233;grer le cas &#233;ch&#233;ant.&lt;/p&gt; &lt;p&gt;Pour &#233;viter tout ennui de cache, d&#233;sactivez le en mettant la ligne suivante dans le fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;mes_options.php&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_php code&quot;&gt;&lt;a href=&quot;http://www.php.net/define&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;_NO_CACHE&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,-&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;&#201;tape 1 : le fichier parent&lt;/h3&gt;
&lt;p&gt;Cr&#233;ons un squelette &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;livre.tex.html&lt;/code&gt;, en y mettant le contenu suivant :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 cadre spip_cadre&quot;&gt;&lt;div class=&quot;spip2&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#HTTP_HEADER&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;content-type:application/x-latex&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;\documentclass&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;a4paper,12pt&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;book&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;\begin&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;document&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #222;&quot;&gt;&lt;BOUCLE_articles&lt;span style=&quot;color: #527EE0;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ARTICLES&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_rubrique&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;!par date&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;\input&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;inclus/article&lt;span style=&quot;color: #CA5200;&quot;&gt;#ID_ARTICLE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #222;&quot;&gt;&lt;/BOUCLE_articles&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;\end&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;document&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/efb17a03428ab1228d99744d2fd417cc.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Analysons le code :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; ligne 1, la &lt;a href=&quot;http://www.spip.net/fr_article4631.html&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;balise #HTTP_HEADER&lt;/a&gt; permet, dans notre cas, deux choses :&lt;ol class=&quot;spip&quot;&gt;&lt;li&gt; de dire au navigateur qu'on produit du latex et pas du html.&lt;/li&gt;&lt;li&gt; d'emp&#234;cher SPIP d'ins&#233;rer les boutons d'administrations.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt; ligne 2, nous d&#233;clarons la classe de notre fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;. Pour rappel, un &lt;a href=&quot;https://fr.wikibooks.org/wiki/LaTeX/Les_classes&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;fichier latex doit toujours commencer par une d&#233;claration de classe&lt;/a&gt;. Ici nous disons que nous produisons un livre, sur du papier A4, avec une police de base de 12 pt.&lt;/li&gt;&lt;li&gt; ligne 3, nous commen&#231;ons le corps du document.&lt;/li&gt;&lt;li&gt; ligne 4, une Boucle classique de SPIP : on demande les articles de la rubrique pass&#233;e en argument lors de l'appel au squelette, class&#233;s par ordre ant&#233;chronologique.&lt;/li&gt;&lt;li&gt; ligne 5, pour chaque article, nous ins&#233;rons le code &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\input{inclus/articlexxx}&lt;/code&gt; qui permettra &#224; LaTeX d'appeler le fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;inclus/articlexxx.tex&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; ligne 6, fin de la boucle.&lt;/li&gt;&lt;li&gt; ligne 7, fin du corps du document LaTeX.&lt;/li&gt;&lt;li&gt; Maintenant, rendons-nous sur &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;http://votresite.dev/?page=livre.tex&amp;id_rubrique=1&lt;/code&gt;. Notre navigateur va nous t&#233;l&#233;charger un fichier contenant les lignes suivantes :&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_latex cadre spip_cadre&quot;&gt;&lt;div class=&quot;latex&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cdocumentclass&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;documentclass&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #C08020; font-weight: normal;&quot;&gt;a4paper,12pt&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;]{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;book&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\begin&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;document&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cinput&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;input&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;inclus/article1&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cinput&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;input&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;inclus/article2&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\end&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;document&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/86271943d89be6678daaae488ce6924d.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;C'est bien, mais il serait bon d'avoir un pr&#233;ambule appelant les packages n&#233;c&#233;ssaires. Ces packages peuvent varier en fonction du contenu des articles, si par exemple on a des images, du code, des tableaux. Mais tout cela &lt;s&gt;est&lt;/s&gt; sera d&#233;taill&#233; dans l'article sur l'API LaTeXWheels.&lt;/p&gt; &lt;p&gt;Pour le moment, contentons nous des packages minimums.&lt;/p&gt; &lt;p&gt;Il nous faut : &lt;br /&gt;- &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;fontspec&lt;/code&gt; et &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;xunicode&lt;/code&gt; pour g&#233;rer correctement l'UTF-8.
&lt;br /&gt;- &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;polyglossia&lt;/code&gt;, pour g&#233;rer les langues.&lt;/p&gt; &lt;p&gt;Ins&#233;rons donc entre le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\documentclass[a4paper,12pt]{book}&lt;/code&gt; et le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\begin{document}&lt;/code&gt; l'appel &#224; ces packages :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_latex code&quot;&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cusepackage&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;fontspec&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cusepackage&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;xunicode&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cusepackage&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;polyglossia&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/115649360d9b47e1348e4a2a3cbb6b38.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Et puis, pr&#233;cisons quand m&#234;me la langue, avec le code suivant :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;\setmainlanguage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#LANG&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_polyglossia&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Alors l&#224;, on a un m&#233;lange de LaTeX, la commande &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\setmainlanguage&lt;/code&gt; qui permet de dire &#224; &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;polyglossia&lt;/code&gt; qu'elle est la langue principale, et donc de g&#233;rer correctement les c&#233;sures et la ponctuation, et le code &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;[(#ENV{lang}|ziptex_polyglossia)]&lt;/code&gt;, qui prend le code de la langue courante, en l'occurence &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;fr&lt;/code&gt; et le transforme en code compr&#233;hensible par &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;polyglossia&lt;/code&gt;, &#224; savoir &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;french&lt;/code&gt;, par le biais du filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|ziptex_polyglossia&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Tout ceci donne donc :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#HTTP_HEADER&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;content-type:application/x-latex&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\documentclass&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;a4paper,12pt&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;book&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\usepackage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;fontspec&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\usepackage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;xunicode&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\usepackage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;polyglossia&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\setmainlanguage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#LANG&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_polyglossia&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\begin&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;document&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;BOUCLE_articles&lt;span style=&quot;color: #527EE0;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ARTICLES&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_rubrique&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;!par date&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;
\input&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;inclus/article&lt;span style=&quot;color: #CA5200;&quot;&gt;#ID_ARTICLE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;/BOUCLE_articles&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;
\end&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;document&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/b41c6cff9449b8f6f4a77080f5f337ae.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Ce qui une fois interpr&#233;t&#233; par SPIP, produit :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_latex code&quot;&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cdocumentclass&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;documentclass&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #C08020; font-weight: normal;&quot;&gt;a4paper,12pt&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;]{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;book&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cusepackage&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;fontspec&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cusepackage&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;xunicode&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cusepackage&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;usepackage&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;polyglossia&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #800000; font-weight: normal;&quot;&gt;\setmainlanguage&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;french&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\begin&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;document&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;
&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cinput&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;input&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;inclus/article2&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;
&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cinput&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;input&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;inclus/article1&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;
&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\end&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;document&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/736dbc90d83f1549dd9b02948c27aeb6.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Et puis soyions fous, ajoutons une table des mati&#232;res, &#224; la fin, avec la commande &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\tableofcontents&lt;/code&gt; :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#HTTP_HEADER&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;content-type:application/x-latex&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\documentclass&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;a4paper,12pt&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;book&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\usepackage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;fontspec&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\usepackage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;xunicode&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\usepackage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;polyglossia&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\setmainlanguage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#LANG&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_polyglossia&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\begin&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;document&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;BOUCLE_articles&lt;span style=&quot;color: #527EE0;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ARTICLES&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_rubrique&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;!par date&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;
\input&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;inclus/article&lt;span style=&quot;color: #CA5200;&quot;&gt;#ID_ARTICLE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;/BOUCLE_articles&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;
\tableofcontents&lt;br /&gt;
\end&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;document&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/d5282d3a8d90ea5a28bb5944821c72f8.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;&#201;tape 2, les fichiers fils&lt;/h3&gt;
&lt;p&gt;Pr&#233;parons le squelette qui va engendrer les fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;inclus/articlexxx.tex&lt;/code&gt;. Appelons ce squelette &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;article.tex&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#HTTP_HEADER&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;content-type:application/x-latex&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;BOUCLE_article&lt;span style=&quot;color: #527EE0;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ARTICLES&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_article&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;
\chapter&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#TITRE&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|propre_latex&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#DATE&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|affdate&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|propre_latex&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#CHAPO&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|propre_latex&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#TEXTE&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|propre_latex&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;B_auteurs&gt;&lt;BOUCLE_auteurs&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;AUTEURS&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_article&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&quot;,&quot;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#NOM&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|propre_latex&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/BOUCLE_auteurs&gt;&lt;/B_auteurs&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;/BOUCLE_article&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/63570283d71f1c9e5add6a41a54b0f85.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Analysons :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Ligne 1, le m&#234;me &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;#HTTP_HEADER&lt;/code&gt; que pr&#233;c&#233;demment, vu que je veux &#224; nouveau produire un fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;&lt;/li&gt;&lt;li&gt; Ligne 2 et 12, boucle ARTICLES classique.&lt;/li&gt;&lt;li&gt; Ligne 3, mettre le titre dans la commande LaTeX &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\chapter{}&lt;/code&gt;.&lt;/li&gt;&lt;li&gt; Ligne 5, mettre la date.&lt;/li&gt;&lt;li&gt; Ligne 7, mettre le chapeau.&lt;/li&gt;&lt;li&gt; Ligne 9, mettre le texte.&lt;/li&gt;&lt;li&gt; Ligne 11, mettre les auteurs.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;On remarque les lignes vides : rappelons qu'en LaTeX, les lignes vides produisent des changements de paragraphes.&lt;/p&gt; &lt;p&gt;Toutes les balises SPIP qui retournent du texte sont pr&#233;sent&#233;s de la mani&#232;re suivante :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#BALISE&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|propre_latex&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Rappelons une r&#232;gle de fonctionnement de SPIP : le contenu de chaque champ de type texte est filtr&#233; automatiquement par le filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|propre&lt;/code&gt;, qui transforme les raccourcis SPIP en code HTML.&lt;/p&gt; &lt;p&gt;En revanche, si on &#233;crit &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;#BALISE*&lt;/code&gt;, &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|propre&lt;/code&gt; n'est pas appel&#233; : on obtient alors le contenu du champ, de mani&#232;re brute&lt;span class=&quot;spip_note_ref&quot;&gt; [&lt;a href=&#039;#nb2-2&#039; class=&#039;spip_note&#039; rel=&#039;footnote&#039; title=&#039;&#192; l'exception des s&#233;curit&#233;s vis-&#224;-vis des codes javascripts et PHP.&#039; id=&#039;nh2-2&#039;&gt;2&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt; &lt;p&gt;C'est ce contenu brut qui est pass&#233; dans le filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|propre_latex&lt;/code&gt; du plugin &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;latexwheel&lt;/code&gt;. Ce filtre transforme les raccourcis SPIP en code LaTeX.&lt;/p&gt; &lt;p&gt;Au final, si je me rend sur la page &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;http://site/?page=article.tex&amp;id_article=1&lt;/code&gt;, j'obtiens :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_latex code&quot;&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Cchapter&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;chapter&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;De l&#039;influence de LaTeX sur la sexualit&#233; humaine&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
28 d&#233;cembre 2011&lt;br /&gt;
Si selon le mot, peut-&#234;tre apocryphe, de Freud, &#171; tout est sexe &#187;, alors LaTeX a une influence sur la sexualit&#233; humaine. Qu&#039;en est-il ?&lt;br /&gt;
On pourrait montrer trois influences de LaTeX en mati&#232;re de sexualit&#233; humaine :&lt;br /&gt;
&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\begin&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;enumerate&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Citem&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;item&lt;/span&gt;&lt;/a&gt; En tant que le LaTeX est g&#233;n&#233;ralement le principal composant des pr&#233;servatifs.&lt;br /&gt;
&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Citem&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;item&lt;/span&gt;&lt;/a&gt; Dans certaines pratiques sexuelles avec certains v&#234;tements.&lt;br /&gt;
&lt;span style=&quot;color: #E02020; &quot;&gt;\&lt;/span&gt;&lt;a href=&quot;http://www.golatex.de/wiki/index.php?title=%5Citem&quot;&gt;&lt;span style=&quot;color: #800000;&quot;&gt;item&lt;/span&gt;&lt;/a&gt; Dans la constitution de groupes d&#039;utilisateurs de LaTeX, pouvant constituer des lieux de rencontres.&lt;br /&gt;
&lt;span style=&quot;color: #C00000; font-weight: normal;&quot;&gt;\end&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;&lt;span style=&quot;color: #0000D0; font-weight: normal;&quot;&gt;enumerate&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;&lt;br /&gt;
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. &lt;br /&gt;
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;br /&gt;
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;br /&gt;
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;br /&gt;
auteur&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/a14be27bfb5e9eab75bed0131d07ae8a.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;&#201;tape 3 : g&#233;n&#233;rer automatiquement les fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; fils&lt;/h3&gt;
&lt;p&gt;L'&#233;tape suivante consiste &#224; dire au squelette &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;livre.tex.html&lt;/code&gt; de g&#233;n&#233;rer automatiquement, lorsqu'il est appel&#233;, les fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; fils, comme &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;article1.tex&lt;/code&gt; et &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;article2.tex&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Pour ce faire, on utilise le filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|ziptex_creer_tex&lt;/code&gt; du plugin &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;ziptex&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Ce filtre s'applique sur le nom du squelette &#224; interpr&#233;ter, sans le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.html&lt;/code&gt; final. Il re&#231;oit comme premier argument le chemin du fichier &#224; produire, &#224; l'int&#233;rieur du dossier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;local/ziptex&lt;/code&gt;, et comme second argument un tableau d'arguments &#224; passer lors de l'appel au squelette.&lt;/p&gt; &lt;p&gt;Dans notre cas, nous souhaitons interpr&#233;ter le squelette &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;article.tex.html&lt;/code&gt;, pour produire un fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;inclus/articlexxx.tex&lt;/code&gt;, en passant &#224; chaque fois au squelette l'&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;id_article&lt;/code&gt; nous int&#233;ressant.&lt;/p&gt; &lt;p&gt;Nous allons donc ins&#233;rer dans le fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;livre.tex.html&lt;/code&gt;, apr&#232;s &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\input{inclus/article#ID_ARTICLE}&lt;/code&gt; la ligne suivante :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_latex code&quot;&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #C08020; font-weight: normal;&quot;&gt;(#VAL{&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;article.tex&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;}&lt;/span&gt;||ziptex_creer_tex&lt;span style=&quot;color: #E02020; &quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: #2020C0; font-weight: normal;&quot;&gt;inclus/article#ID_ARTICLE.tex,#ARRAY{id_article,#ID_ARTICLE&lt;/span&gt;}})&lt;/span&gt;&lt;span style=&quot;color: #E02020; &quot;&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Par ailleurs, comme nous souhaitons cr&#233;er un sous-dossier (&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;inclus&lt;/code&gt;), il nous faut dire de g&#233;n&#233;rer le sous-dossier le cas &#233;ch&#233;ant. Pour ce faire, on utilise la ligne suivante :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;0,inclus&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_dir&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;qu'on met dans le squelette &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;livre.tex.html&lt;/code&gt;, en dehors de la boucle.&lt;/p&gt; &lt;p&gt;Au final, on obtient :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#HTTP_HEADER&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;content-type:application/x-latex&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;0,inclus&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_dir&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
\documentclass&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;a4paper,12pt&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;book&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\usepackage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;fontspec&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\usepackage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;xunicode&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\usepackage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;polyglossia&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\setmainlanguage&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#LANG&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_polyglossia&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
\begin&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;document&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;BOUCLE_articles&lt;span style=&quot;color: #527EE0;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ARTICLES&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_rubrique&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;!par date&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;
\input&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;inclus/article&lt;span style=&quot;color: #CA5200;&quot;&gt;#ID_ARTICLE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#VAL&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;article.tex&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_creer_tex&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;inclus/article&lt;span style=&quot;color: #CA5200;&quot;&gt;#ID_ARTICLE&lt;/span&gt;.tex,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_article,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ID_ARTICLE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #222;&quot;&gt;&lt;/BOUCLE_articles&lt;/span&gt;&lt;span style=&quot;color: #222;&quot;&gt;&gt;&lt;/span&gt;&lt;br /&gt;
\tableofcontents&lt;br /&gt;
\end&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;document&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/c49ba96d646312dc31b94cf29f39f4f5.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;D&#233;sormais, en allant sur &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;http://site.com/?page=livre&amp;id_rubrique=1&lt;/code&gt;, non seulement SPIP nous retourne un fichier LaTeX, mais en plus il produit les fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;inclus/article1.tex&lt;/code&gt; et &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;inclus/article2.tex&lt;/code&gt; dans le dossier local/ziptex&lt;/code&gt;.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;&#201;tape 4 Fabriquer un zip contenant tout les fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Il va maintenant falloir produire un zip contenant tout les &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; n&#233;c&#233;ssaires &#224; la production du livre.&lt;/p&gt; &lt;p&gt;Pour ce faire, nous allons cr&#233;er un squelette &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;livre.html&lt;/code&gt;, qui nous retournera l'adresse du Zip.&lt;/p&gt; &lt;p&gt;Pour que ce zip soit g&#233;n&#233;r&#233;, on va appeler le filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|ziptex_zipper&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Ce filtre zipper le dossier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;local/ziptex&lt;/code&gt; et retourne l'url du Zip.&lt;/p&gt; &lt;p&gt;Mais avant de zipper, le filtre peut ajouter du contenu dans le dossier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;local/ziptex&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Pour ce faire, il re&#231;oit un tableau (au sens PHP) dont la structure est la suivante :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; 0. Un tableau contenant les .tex direct, c'est &#224; dire sans code SPIP dedans, avec &#224; chaque fois :&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; 0. Chemin du fichier .tex dans l'arborescence SPIP&lt;/li&gt;&lt;li&gt; 1. Chemin du fichier .tex dans le future ZIP&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; 1. Un tableau contenant les squelettes qui g&#233;n&#233;reront du latex avec &#224; chaque fois :&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; 0. Chemin du squelette, sans le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.html&lt;/code&gt;&lt;/li&gt;&lt;li&gt; 1. Chemin du .tex correspondant, avec le .tex&lt;/li&gt;&lt;li&gt; 2. Option du squelette&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Dans notre cas, l'entr&#233;e 0 doit &#234;tre vide. En revanche l'entr&#233;e 1 contiendra elle m&#234;me une seule entr&#233;e, correspondant &#224; la transformation du squelette &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;livre.tex.html&lt;/code&gt; en fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;livre.tex&lt;/code&gt;. On passera la rubrique courante comme argument.&lt;/p&gt; &lt;p&gt;Nous allons mettre ce tableau dans un #GET, &lt;a href=&quot;http://www.spip.net/fr_article4009.html&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;&#224; l'aide la balise #ARRAY&lt;/a&gt;. Puis nous allons appeler sur ce tableau le filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;ziptex_zipper&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Ce qui donne :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 code&quot;&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#SET&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;tableau,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;&quot;&gt;0&lt;/span&gt;,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;,&lt;br /&gt; &lt;span style=&quot;&quot;&gt;1&lt;/span&gt;,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;&quot;&gt;0&lt;/span&gt;,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;br /&gt; &lt;span style=&quot;&quot;&gt;0&lt;/span&gt;,livre.tex,&lt;br /&gt; &lt;span style=&quot;&quot;&gt;1&lt;/span&gt;,livre.tex,&lt;br /&gt; &lt;span style=&quot;&quot;&gt;2&lt;/span&gt;,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ARRAY&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;id_rubrique,&lt;span style=&quot;color: #CA5200;&quot;&gt;#ID_RUBRIQUE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt; &lt;br /&gt; &lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;br /&gt; &lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#GET&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;tableau&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|ziptex_zipper&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&quot;&gt;Le zip&lt;/a&gt;&lt;/div&gt;&lt;div class=&#039;code_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/35e6162c6b417165099c084322520372.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Si je me rend sur &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;http://site.com/?page=livre&amp;id_rubrique=1&lt;/code&gt;, j'obtiens un liens vers le zip contenant les fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Si on compile deux fois ce fichier, avec XeLaTeX, on obient alors le PDF joint.&lt;/p&gt;
&lt;dl class=&#039;spip_document_10374 spip_documents&#039;&gt;
&lt;dt&gt;&lt;a href=&quot;http://www.spip-contrib.net/IMG/zip/ziptex-2.zip&quot; title=&#039;Zip - 2.7&#160;ko&#039; type=&quot;application/zip&quot;&gt;&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L52xH52/zip-8890c.png&#039; width=&#039;52&#039; height=&#039;52&#039; alt=&#039;Zip - 2.7&#160;ko&#039; style=&#039;&#039; /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class=&#039;crayon document-titre-10374 spip_doc_titre&#039; style=&#039;width:120px;&#039;&gt;&lt;strong&gt;Ensemble des fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;dl class=&#039;spip_document_10375 spip_documents&#039;&gt;
&lt;dt&gt;&lt;a href=&quot;http://www.spip-contrib.net/IMG/pdf/livre.pdf&quot; title=&#039;PDF - 23.2&#160;ko&#039; type=&quot;application/pdf&quot;&gt;&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L52xH52/pdf-38d34.png&#039; width=&#039;52&#039; height=&#039;52&#039; alt=&#039;PDF - 23.2&#160;ko&#039; style=&#039;&#039; /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class=&#039;crayon document-titre-10375 spip_doc_titre&#039; style=&#039;width:120px;&#039;&gt;&lt;strong&gt;Fichier PDF final&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Conclusion&lt;/h3&gt;&lt;dl class=&#039;spip_document_10376 spip_documents spip_documents_right&#039; style=&#039;float:right;&#039;&gt;
&lt;dt&gt;&lt;a href=&quot;http://files.spip.org/contribs/tutolivre.zip&quot; title=&#039;Zip - 1.5&#160;ko&#039; type=&quot;application/zip&quot;&gt;&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L52xH52/zip-8890c.png&#039; width=&#039;52&#039; height=&#039;52&#039; alt=&#039;Zip - 1.5&#160;ko&#039; style=&#039;&#039; /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dt class=&#039;crayon document-titre-10376 spip_doc_titre&#039; style=&#039;width:120px;&#039;&gt;&lt;strong&gt;Squelette complet&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt; Cet article vous pr&#233;sente les base pour transformer du SPIP en LaTeX. Vous pouvez trouver ci joint le squelette complet de ce tutoriel.&lt;/p&gt; &lt;p&gt; Il faut ensuite &#233;videmment conna&#238;tre LaTeX pour g&#233;rer la pr&#233;sentation. En outre, si nos textes sont plus complexes (liens, code, etc.) il faut appeler d'autres packages, ajouter des codes.&lt;/p&gt; &lt;p&gt;On se reportera aux deux articles de r&#233;f&#233;rences :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;a href=&quot;http://www.spip-contrib.net/Reference-de-LaTeXWheel&quot; class=&#039;spip_in&#039;&gt;R&#233;f&#233;rence de LaTeXWheel&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.spip-contrib.net/Reference-de-ZipTeX&quot; class=&#039;spip_in&#039;&gt;R&#233;f&#233;rence de ZipTeX&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#039;nb2-1&#039;&gt;
&lt;p&gt;&lt;span class=&quot;spip_note_ref&quot;&gt;[&lt;a href=&#039;#nh2-1&#039; class=&#039;spip_note&#039; title=&#039;Notes 2-1&#039; rev=&#039;footnote&#039;&gt;1&lt;/a&gt;] &lt;/span&gt;Le niveau intellectuel qui est y pr&#233;sent n'engage pas son auteur, qui avait besoin de textes mais n'avait pas envie de se creuser la t&#234;te &#8230;&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#039;nb2-2&#039;&gt;
&lt;p&gt;&lt;span class=&quot;spip_note_ref&quot;&gt;[&lt;a href=&#039;#nh2-2&#039; class=&#039;spip_note&#039; title=&#039;Notes 2-2&#039; rev=&#039;footnote&#039;&gt;2&lt;/a&gt;] &lt;/span&gt;&#192; l'exception des s&#233;curit&#233;s vis-&#224;-vis des codes javascripts et PHP.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;La structure propos&#233;e ne vous convient pas ? Il est possible de produire les fichiers &lt;code&gt;.tex&lt;/code&gt; correspondant &#224; vos besoins. Pour ce faire, c&#039;est enti&#232;rement des boucles SPIP, avec une API sp&#233;ciale. Ceci est donc une documentation d&#233;vellopeur. Pour &#234;tre comprise, elle n&#233;cessite des comp&#233;tences : - En SPIP - En LaTeX&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;{{{Les diff&#233;rent &#233;l&#232;ments de l&#039;API}}} - Le plugin latexwheel propose des r&#232;gles de transformation des raccourcis SPIP en code LaTeX. [Il se base sur TextWheel-&gt;http://zzz.rezo.net/Presentation-de-Textwheel.html].
- Le plugin ZipTeX, qui se base sur le plugin [Zippeur-&gt;3576]. Cet article se veut un tutoriel visant &#224; montrer comment se servir de ces deux plugins pour cr&#233;er sa propre structure de liste avec SPIP. Deux articles plus d&#233;taill&#233;s donnent les d&#233;tails de l&#039;API. {{{Exemple de la structure prise}}} La structure sera simple : il s&#039;agira dans un livre de regrouper {{tout}} les articles d&#039;une rubrique. Par exemple, la rubrique {&#233;ditoriale}, en les classant par ordre chronologique, en mettant &#224; chaque fois le titre, suivi de la date, du chapo, du corps du texte, puis de la signature des auteurs. {{{Organisation finale de notre Zip}}} Il est possible en LaTeX de diviser un projet en plusieurs fichiers &lt;code&gt;.tex&lt;/code&gt;, un peu comme on ferait en SPIP [avec des squelettes inclus-&gt;http://programmer.spip.org/Inclure-des-squelettes], via &lt;code&gt;&lt;INCLURE&gt;&lt;/code&gt; ou &lt;code&gt;#INCLURE&lt;/code&gt;. Dans cette logique, le but est que SPIP produise un fichier &lt;code&gt;livre.tex&lt;/code&gt;, qui appelle lui-m&#234;me des des fichiers &lt;code&gt;inclure/articlexxx.html&lt;/code&gt; correspondant &#224; chaque article. L&#039;ensemble de ces fichiers &#233;tant regroup&#233;s dans un fichier &lt;code&gt;.zip&lt;/code&gt;. Pour les besoins de l&#039;exercice, nous nous servirons de la base de donn&#233;e sqlite jointe[[Le niveau intellectuel qui est y pr&#233;sent n&#039;engage pas son auteur, qui avait besoin de textes mais n&#039;avait pas envie de se creuser la t&#234;te &#8230;]]. L&#039;identifiant pour se connecter est &lt;code&gt;auteur&lt;/code&gt; et le mot de passe est &lt;code&gt;demodemo&lt;/code&gt;. &lt;doc10349|right&gt; Nous supposerons qu&#039;il n&#039;y a ni images dans nos articles, ni code informatique, ni liens. L&#039;article d&#233;taill&#233; sur l&#039;API fournit les outils pour les int&#233;grer le cas &#233;ch&#233;ant. Pour &#233;viter tout ennui de cache, d&#233;sactivez le en mettant la ligne suivante dans le fichier &lt;code&gt;mes_options.php&lt;/code&gt; : &lt;code class=&#039;php&#039;&gt;
define(&#039;_NO_CACHE&#039;,-1);
&lt;/code&gt; {{{&#201;tape~1 : le fichier parent}}} Cr&#233;ons un squelette &lt;code&gt;livre.tex.html&lt;/code&gt;, en y mettant le contenu suivant : &lt;cadre class=&#039;spip&#039;&gt;
#HTTP_HEADER{content-type:application/x-latex}
\documentclass[a4paper,12pt]{book}
\begin{document}
&lt;BOUCLE_articles(ARTICLES){id_rubrique}{!par date}&gt;
\input{inclus/article#ID_ARTICLE}
&lt;/BOUCLE_articles&gt;
\end{document}
&lt;/cadre&gt; Analysons le code :
-* ligne~1, la [balise #HTTP_HEADER-&gt;http://www.spip.net/fr_article4631.html] permet, dans notre cas, deux choses :
-## de dire au navigateur qu&#039;on produit du latex et pas du html.
-## d&#039;emp&#234;cher SPIP d&#039;ins&#233;rer les boutons d&#039;administrations.
-* ligne~2, nous d&#233;clarons la classe de notre fichier &lt;code&gt;.tex&lt;/code&gt;. Pour rappel, un [fichier latex doit toujours commencer par une d&#233;claration de classe-&gt;https://fr.wikibooks.org/wiki/LaTeX/Les_classes]. Ici nous disons que nous produisons un livre, sur du papier~A4, avec une police de base de 12~pt.
-* ligne~3, nous commen&#231;ons le corps du document.
-* ligne~4, une Boucle classique de SPIP : on demande les articles de la rubrique pass&#233;e en argument lors de l&#039;appel au squelette, class&#233;s par ordre ant&#233;chronologique.
-* ligne~5, pour chaque article, nous ins&#233;rons le code &lt;code&gt;\input{inclus/articlexxx}&lt;/code&gt; qui permettra &#224; LaTeX d&#039;appeler le fichier &lt;code&gt;inclus/articlexxx.tex&lt;/code&gt;.
-* ligne~6, fin de la boucle.
-* ligne~7, fin du corps du document LaTeX.
-* Maintenant, rendons-nous sur &lt;code&gt;http://votresite.dev/?page=livre.tex&amp;id_rubrique=1&lt;/code&gt;. Notre navigateur va nous t&#233;l&#233;charger un fichier contenant les lignes suivantes : &lt;cadre class=&#039;latex&#039;&gt;
\documentclass[a4paper,12pt]{book}
\begin{document} \input{inclus/article1} \input{inclus/article2} \end{document}
&lt;/cadre&gt; C&#039;est bien, mais il serait bon d&#039;avoir un pr&#233;ambule appelant les packages n&#233;c&#233;ssaires. Ces packages peuvent varier en fonction du contenu des articles, si par exemple on a des images, du code, des tableaux. Mais tout cela &lt;s&gt;est&lt;/s&gt; sera d&#233;taill&#233; dans l&#039;article sur l&#039;API LaTeXWheels. Pour le moment, contentons nous des packages minimums. Il nous faut : - &lt;code&gt;fontspec&lt;/code&gt; et &lt;code&gt;xunicode&lt;/code&gt; pour g&#233;rer correctement l&#039;UTF-8.
- &lt;code&gt;polyglossia&lt;/code&gt;, pour g&#233;rer les langues. Ins&#233;rons donc entre le &lt;code&gt;\documentclass[a4paper,12pt]{book}&lt;/code&gt; et le &lt;code&gt;\begin{document}&lt;/code&gt; l&#039;appel &#224; ces packages : &lt;code class=&#039;latex&#039;&gt;
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{polyglossia}
&lt;/code&gt; Et puis, pr&#233;cisons quand m&#234;me la langue, avec le code suivant : &lt;code class=&#039;spip&#039;&gt;\setmainlanguage{[(#LANG|ziptex_polyglossia)]}&lt;/code&gt; Alors l&#224;, on a un m&#233;lange de LaTeX, la commande &lt;code&gt;\setmainlanguage&lt;/code&gt; qui permet de dire &#224; &lt;code&gt;polyglossia&lt;/code&gt; qu&#039;elle est la langue principale, et donc de g&#233;rer correctement les c&#233;sures et la ponctuation, et le code &lt;code&gt;[(#ENV{lang}|ziptex_polyglossia)]&lt;/code&gt;, qui prend le code de la langue courante, en l&#039;occurence &lt;code&gt;fr&lt;/code&gt; et le transforme en code compr&#233;hensible par &lt;code&gt;polyglossia&lt;/code&gt;, &#224; savoir &lt;code&gt;french&lt;/code&gt;, par le biais du filtre &lt;code&gt;|ziptex_polyglossia&lt;/code&gt;. Tout ceci donne donc : &lt;code class=&#039;spip&#039;&gt;
#HTTP_HEADER{content-type:application/x-latex}
\documentclass[a4paper,12pt]{book}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{polyglossia}
\setmainlanguage{[(#LANG|ziptex_polyglossia)]}
\begin{document}
&lt;BOUCLE_articles(ARTICLES){id_rubrique}{!par date}&gt;
\input{inclus/article#ID_ARTICLE}
&lt;/BOUCLE_articles&gt;
\end{document}
&lt;/code&gt; Ce qui une fois interpr&#233;t&#233; par SPIP, produit : &lt;code class=&#039;latex&#039;&gt;
\documentclass[a4paper,12pt]{book}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{polyglossia}
\setmainlanguage{french}
\begin{document} \input{inclus/article2} \input{inclus/article1} \end{document}
&lt;/code&gt; Et puis soyions fous, ajoutons une table des mati&#232;res, &#224; la fin, avec la commande &lt;code&gt;\tableofcontents&lt;/code&gt; : &lt;code class=&#039;spip&#039;&gt;
#HTTP_HEADER{content-type:application/x-latex}
\documentclass[a4paper,12pt]{book}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{polyglossia}
\setmainlanguage{[(#LANG|ziptex_polyglossia)]}
\begin{document} &lt;BOUCLE_articles(ARTICLES){id_rubrique}{!par date}&gt;
\input{inclus/article#ID_ARTICLE}
&lt;/BOUCLE_articles&gt; \tableofcontents
\end{document}
&lt;/code&gt; {{{&#201;tape~2, les fichiers fils}}} Pr&#233;parons le squelette qui va engendrer les fichiers &lt;code&gt;inclus/articlexxx.tex&lt;/code&gt;. Appelons ce squelette &lt;code&gt;article.tex&lt;/code&gt;. &lt;code class=&#039;spip&#039;&gt;
#HTTP_HEADER{content-type:application/x-latex}
&lt;BOUCLE_article(ARTICLES){id_article}&gt;
\chapter{[(#TITRE*|propre_latex)]} [(#DATE|affdate|propre_latex)] [(#CHAPO*|propre_latex)] [(#TEXTE*|propre_latex)] &lt;B_auteurs&gt;&lt;BOUCLE_auteurs(AUTEURS){id_article}{&quot;,&quot;}&gt;[(#NOM*|propre_latex)&lt;/BOUCLE_auteurs&gt;&lt;/B_auteurs&gt;
&lt;/BOUCLE_article&gt;
&lt;/code&gt; Analysons : -* Ligne 1, le m&#234;me &lt;code&gt;#HTTP_HEADER&lt;/code&gt; que pr&#233;c&#233;demment, vu que je veux &#224; nouveau produire un fichier &lt;code&gt;.tex&lt;/code&gt;
-* Ligne 2 et 12, boucle ARTICLES classique.
-* Ligne 3, mettre le titre dans la commande LaTeX &lt;code&gt;\chapter{}&lt;/code&gt;.
-* Ligne 5, mettre la date.
-* Ligne 7, mettre le chapeau.
-* Ligne 9, mettre le texte.
-* Ligne 11, mettre les auteurs. On remarque les lignes vides : rappelons qu&#039;en LaTeX, les lignes vides produisent des changements de paragraphes. Toutes les balises SPIP qui retournent du texte sont pr&#233;sent&#233;s de la mani&#232;re suivante :
&lt;code class=&#039;spip&#039;&gt;[(#BALISE*|propre_latex)]&lt;/code&gt; Rappelons une r&#232;gle de fonctionnement de SPIP : le contenu de chaque champ de type texte est filtr&#233; automatiquement par le filtre &lt;code&gt;|propre&lt;/code&gt;, qui transforme les raccourcis SPIP en code HTML. En revanche, si on &#233;crit &lt;code&gt;#BALISE*&lt;/code&gt;, &lt;code&gt;|propre&lt;/code&gt; n&#039;est pas appel&#233; : on obtient alors le contenu du champ, de mani&#232;re brute[[&#192; l&#039;exception des s&#233;curit&#233;s vis-&#224;-vis des codes javascripts et PHP.]]. C&#039;est ce contenu brut qui est pass&#233; dans le filtre &lt;code&gt;|propre_latex&lt;/code&gt; du plugin &lt;code&gt;latexwheel&lt;/code&gt;. Ce filtre transforme les raccourcis SPIP en code LaTeX. Au final, si je me rend sur la page &lt;code&gt;http://site/?page=article.tex&amp;id_article=1&lt;/code&gt;, j&#039;obtiens : &lt;code class=&#039;latex&#039;&gt; \chapter{De l&#039;influence de LaTeX sur la sexualit&#233; humaine} 28 d&#233;cembre 2011 Si selon le mot, peut-&#234;tre apocryphe, de Freud, &#171; tout est sexe &#187;, alors LaTeX a une influence sur la sexualit&#233; humaine. Qu&#039;en est-il ? On pourrait montrer trois influences de LaTeX en mati&#232;re de sexualit&#233; humaine : \begin{enumerate}
\item En tant que le LaTeX est g&#233;n&#233;ralement le principal composant des pr&#233;servatifs.
\item Dans certaines pratiques sexuelles avec certains v&#234;tements.
\item Dans la constitution de groupes d&#039;utilisateurs de LaTeX, pouvant constituer des lieux de rencontres.
\end{enumerate} Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. auteur
&lt;/code&gt; {{{&#201;tape~3 : g&#233;n&#233;rer automatiquement les fichiers &lt;code&gt;.tex&lt;/code&gt; fils}}} L&#039;&#233;tape suivante consiste &#224; dire au squelette &lt;code&gt;livre.tex.html&lt;/code&gt; de g&#233;n&#233;rer automatiquement, lorsqu&#039;il est appel&#233;, les fichiers &lt;code&gt;.tex&lt;/code&gt; fils, comme &lt;code&gt;article1.tex&lt;/code&gt; et &lt;code&gt;article2.tex&lt;/code&gt;. Pour ce faire, on utilise le filtre &lt;code&gt;|ziptex_creer_tex&lt;/code&gt; du plugin &lt;code&gt;ziptex&lt;/code&gt;. Ce filtre s&#039;applique sur le nom du squelette &#224; interpr&#233;ter, sans le &lt;code&gt;.html&lt;/code&gt; final. Il re&#231;oit comme premier argument le chemin du fichier &#224; produire, &#224; l&#039;int&#233;rieur du dossier &lt;code&gt;local/ziptex&lt;/code&gt;, et comme second argument un tableau d&#039;arguments &#224; passer lors de l&#039;appel au squelette. Dans notre cas, nous souhaitons interpr&#233;ter le squelette &lt;code&gt;article.tex.html&lt;/code&gt;, pour produire un fichier &lt;code&gt;inclus/articlexxx.tex&lt;/code&gt;, en passant &#224; chaque fois au squelette l&#039;&lt;code&gt;id_article&lt;/code&gt; nous int&#233;ressant. Nous allons donc ins&#233;rer dans le fichier &lt;code&gt;livre.tex.html&lt;/code&gt;, apr&#232;s &lt;code&gt;\input{inclus/article#ID_ARTICLE}&lt;/code&gt; la ligne suivante : &lt;code class=&#039;latex&#039;&gt;
[(#VAL{article.tex}||ziptex_creer_tex{inclus/article#ID_ARTICLE.tex,#ARRAY{id_article,#ID_ARTICLE}})]
&lt;/code&gt; Par ailleurs, comme nous souhaitons cr&#233;er un sous-dossier (&lt;code&gt;inclus&lt;/code&gt;), il nous faut dire de g&#233;n&#233;rer le sous-dossier le cas &#233;ch&#233;ant. Pour ce faire, on utilise la ligne suivante : &lt;code class=&#039;spip&#039;&gt;
[(#ARRAY{0,inclus}|ziptex_dir)]
&lt;/code&gt; qu&#039;on met dans le squelette &lt;code&gt;livre.tex.html&lt;/code&gt;, en dehors de la boucle. Au final, on obtient : &lt;code class=&#039;spip&#039;&gt;
#HTTP_HEADER{content-type:application/x-latex}
[(#ARRAY{0,inclus}|ziptex_dir)]
\documentclass[a4paper,12pt]{book}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{polyglossia}
\setmainlanguage{[(#LANG|ziptex_polyglossia)]}
\begin{document}
&lt;BOUCLE_articles(ARTICLES){id_rubrique}{!par date}&gt;
\input{inclus/article#ID_ARTICLE}
[(#VAL{article.tex}|ziptex_creer_tex{inclus/article#ID_ARTICLE.tex,#ARRAY{id_article,#ID_ARTICLE}})]
&lt;/BOUCLE_articles&gt;
\tableofcontents
\end{document}
&lt;/code&gt; D&#233;sormais, en allant sur &lt;code&gt;http://site.com/?page=livre&amp;id_rubrique=1&lt;/code&gt;, non seulement SPIP nous retourne un fichier LaTeX, mais en plus il produit les fichiers &lt;code&gt;inclus/article1.tex&lt;/code&gt; et &lt;code&gt;inclus/article2.tex&lt;/code&gt; dans le dossier local/ziptex&lt;/code&gt;. {{{&#201;tape~4 Fabriquer un zip contenant tout les fichiers &lt;code&gt;.tex&lt;/code&gt;}}} Il va maintenant falloir produire un zip contenant tout les &lt;code&gt;.tex&lt;/code&gt; n&#233;c&#233;ssaires &#224; la production du livre. Pour ce faire, nous allons cr&#233;er un squelette &lt;code&gt;livre.html&lt;/code&gt;, qui nous retournera l&#039;adresse du Zip. Pour que ce zip soit g&#233;n&#233;r&#233;, on va appeler le filtre &lt;code&gt;|ziptex_zipper&lt;/code&gt;. Ce filtre zipper le dossier &lt;code&gt;local/ziptex&lt;/code&gt; et retourne l&#039;url du Zip. Mais avant de zipper, le filtre peut ajouter du contenu dans le dossier &lt;code&gt;local/ziptex&lt;/code&gt;. Pour ce faire, il re&#231;oit un tableau (au sens PHP) dont la structure est la suivante : -* 0. Un tableau contenant les .tex direct, c&#039;est &#224; dire sans code SPIP dedans, avec &#224; chaque fois :
-** 0. Chemin du fichier .tex dans l&#039;arborescence SPIP
-** 1. Chemin du fichier .tex dans le future ZIP
-* 1. Un tableau contenant les squelettes qui g&#233;n&#233;reront du latex avec &#224; chaque fois :
-** 0. Chemin du squelette, sans le &lt;code&gt;.html&lt;/code&gt;
-** 1. Chemin du .tex correspondant, avec le .tex
-** 2. Option du squelette Dans notre cas, l&#039;entr&#233;e 0 doit &#234;tre vide. En revanche l&#039;entr&#233;e 1 contiendra elle m&#234;me une seule entr&#233;e, correspondant &#224; la transformation du squelette &lt;code&gt;livre.tex.html&lt;/code&gt; en fichier &lt;code&gt;livre.tex&lt;/code&gt;. On passera la rubrique courante comme argument. Nous allons mettre ce tableau dans un #GET, [&#224; l&#039;aide la balise #ARRAY-&gt;http://www.spip.net/fr_article4009.html]. Puis nous allons appeler sur ce tableau le filtre &lt;code&gt;ziptex_zipper&lt;/code&gt;. Ce qui donne : &lt;code class=&#039;spip&#039;&gt;
#SET{tableau,#ARRAY{ 0,#ARRAY{}, 1,#ARRAY{ 0,#ARRAY{ 0,livre.tex, 1,livre.tex, 2,#ARRAY{id_rubrique,#ID_RUBRIQUE} } } } }
&lt;a href=&quot;http://www.spip-contrib.net/[(#GET{tableau}|ziptex_zipper)]&quot;&gt;Le zip&lt;/a&gt;
&lt;/code&gt; Si je me rend sur &lt;code&gt;http://site.com/?page=livre&amp;id_rubrique=1&lt;/code&gt;, j&#039;obtiens un liens vers le zip contenant les fichiers &lt;code&gt;.tex&lt;/code&gt;. Si on compile deux fois ce fichier, avec XeLaTeX, on obient alors le PDF joint. &lt;doc10374&gt;
&lt;doc10375&gt; {{{Conclusion}}} &lt;doc10376|right&gt; Cet article vous pr&#233;sente les base pour transformer du SPIP en LaTeX. Vous pouvez trouver ci joint le squelette complet de ce tutoriel. Il faut ensuite &#233;videmment conna&#238;tre LaTeX pour g&#233;rer la pr&#233;sentation. En outre, si nos textes sont plus complexes (liens, code, etc.) il faut appeler d&#039;autres packages, ajouter des codes. On se reportera aux deux articles de r&#233;f&#233;rences :
-* [-&gt;4051]
-* [-&gt;4052]&lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		

	</item>



	<item>
		<title>Fabriquer les .tex puis le .PDF</title>
		<link>http://www.spip-contrib.net/Fabriquer-les-tex-puis-le-PDF</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Fabriquer-les-tex-puis-le-PDF</guid>
		<dc:date>2012-01-17T16:54:09Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>

<category domain="http://www.spip-contrib.net/Livre-avec-SPIP">Livre avec SPIP</category>

		<dc:subject>Hors sommaire</dc:subject>
		<dc:subject>SPIP 3.0</dc:subject>

		<description>
&lt;p&gt;Maintenant que votre livre est r&#233;dig&#233; en version web gr&#226;ce au squelette documentation, il s'agit de produire le PDF, pour ensuite l'imprimer. Ceci se passe en deux &#233;tapes : g&#233;n&#233;rer un ensemble de fichiers .tex passer ces fichiers dans le &#171; compilateur &#187; LaTeX pour produire le PDF. Faire une copie locale La g&#233;n&#233;ration de l'ensemble des fichiers .tex est assez energivore. En effet il faut dans une m&#234;me action : convertir les raccourcis SPIP en code LaTeX cr&#233;er l'ensemble des fichiers .tex depuis (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Livre-avec-SPIP" rel="directory"&gt;Livre avec SPIP&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/+-Hors-sommaire-+" rel="tag"&gt;Hors sommaire&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-3-0" rel="tag"&gt;SPIP 3.0&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon1568.png?1326819038&quot; width=&quot;800&quot; height=&quot;800&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Maintenant que votre livre est r&#233;dig&#233; en version web gr&#226;ce au &lt;a href=&quot;http://www.spip-contrib.net/Utiliser-le-squelette-Documentation-pour-rediger-un&quot; class=&#039;spip_in&#039;&gt;squelette documentation&lt;/a&gt;, il s'agit de produire le PDF, pour ensuite l'imprimer.&lt;/p&gt; &lt;p&gt;Ceci se passe en deux &#233;tapes :
&lt;br /&gt;- g&#233;n&#233;rer un ensemble de fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;
&lt;br /&gt;- passer ces fichiers dans le &#171; compilateur &#187; LaTeX pour produire le PDF.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Faire une copie locale&lt;/h3&gt;
&lt;p&gt;La g&#233;n&#233;ration de l'ensemble des fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; est assez energivore. En effet il faut dans une m&#234;me action :
&lt;br /&gt;- convertir les raccourcis SPIP en code LaTeX
&lt;br /&gt;- cr&#233;er l'ensemble des fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; depuis la base de donn&#233;e.
&lt;br /&gt;- les mettre en ZIP.&lt;/p&gt; &lt;p&gt;Pour cette raison, nous recommandons lors du passage en &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; de faire une copie locale du site.&lt;/p&gt; &lt;p&gt;Pour ce faire, on se reportera &#224; l'un des tutoriels suivant :
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Installer-SPIP-sous-Mac-OS-X-avec-MAMP&quot; class=&#039;spip_in&#039;&gt;Pour Mac&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://www.generationcyb.net/Installer-SPIP-en-local-avec,1566&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;Pour Windows&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Une fois l'installation locale faite, il faut bien s&#251;r r&#233;cup&#233;rer le contenu de la base de donn&#233;e pour la copier en local. Ainsi que les &#233;ventuelles images du dossier IMG.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;G&#233;n&#233;rer les &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Pour g&#233;n&#233;r&#233;r les &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;, il faudra installer :
&lt;br /&gt;- le plugin &lt;strong&gt;latexwheel&lt;/strong&gt;, qui permet de convertir les raccourcis SPIP en code LaTeX.
&lt;br /&gt;- le plugin &lt;strong&gt;ziptex&lt;/strong&gt; qui permet d'assembler un ensemble de fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; en un zip. Ce plugin n&#233;c&#233;ssite le plugin &lt;a href=&quot;http://www.spip-contrib.net/Zippeur&quot; class=&#039;spip_in&#039;&gt;Zippeur&lt;/a&gt;.
&lt;br /&gt;- le jeu de squelettes &lt;strong&gt;documentation2latex&lt;/strong&gt; qui proposent des squelettes produisants des fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; correspondants au squelette documentations.&lt;/p&gt; &lt;p&gt;Une fois cela fait, on se rendra sur la page &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;adressedusiteenlocal/?page=generer-zip&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;L'ordinateur va ramer un peu pour g&#233;n&#233;rer les zips. Donc c'est normal que la page ne s'affiche pas tout de suite. Mais apr&#232;s, une fois que la page s'affiche, il suffit de cliquer sur le liens pour r&#233;cuperer le zip.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Fabriquer le fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;PDF&lt;/code&gt; &#224; partir des fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;- Il faut disposer d'une installation LaTeX.&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Sous Windows : &lt;a href=&quot;http://miktex.org/&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://miktex.org/&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Sous Mac : &lt;a href=&quot;https://www.tug.org/mactex/&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;https://www.tug.org/mactex/&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Sous Linux : &lt;a href=&quot;https://www.tug.org/texlive/&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;https://www.tug.org/texlive/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;- En outre&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Si on utilise &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;colorationcode&lt;/code&gt; ou si on cite du code, il faut installer pygments : &lt;a href=&quot;http://pygments.org/docs/installation/&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://pygments.org/docs/installation/&lt;/a&gt;. Il faut du coup faire un peu de ligne de commande.&lt;/li&gt;&lt;li&gt; Si dans ce code color&#233;, il y a du code SPIP, il faut &lt;a href=&quot;http://www.spip-contrib.net/Installer-la-coloration-syntaxique-pour-SPIP-dans&quot; class=&#039;spip_in&#039;&gt;installer la coloration syntaxique pour SPIP dans Pygments&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;La d&#233;marche varie selon que l'on utilise la coloration syntaxique ou non :
&lt;br /&gt;- Si on n'utilise pas la coloration syntaxique, on peut utiliser une interface graphique pour compiler. Il faut ouvrir le fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;documentation.tex&lt;/code&gt; du dossier contenu dans le zip avec le logiciel TeXWorks. Dans le menu d&#233;roulant en haut de la fen&#234;tre, choisir &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;XeLaTeX&lt;/code&gt; puis cliquer sur le bouton vert.&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10335 spip_documents spip_documents_left&#039; style=&#039;float:left; width:520px;&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH38/capture_d_ecran_2012-01-15_a_16.38.57-c2d58.png&#039; width=&#039;520&#039; height=&#039;38&#039; alt=&quot;&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt; Une premi&#232;re compilation (= transformation du &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; en &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.pdf&lt;/code&gt; se lance. Une fois achev&#233;e, il faut cliquer une deuxi&#232;me fois sur le bouton vert. Puis une troisi&#232;me fois, pour s'assurer que le sommaire soit correcte. Une fois cela fait, on trouve le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.pdf&lt;/code&gt; &#224; c&#244;t&#233; du fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;
&lt;br /&gt;- Si on utilise la coloration syntaxique, on doit utiliser la ligne de commande. Il faut alors se rendre dans le dossier du zip d&#233;compress&#233;. Puis il faut frapper &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;latexmk&lt;/code&gt;. Lorsque l'ex&#233;cution est termin&#233;e (cela peut prendre plus ou moins de temps), on trouve le fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.pdf&lt;/code&gt; &#224; c&#244;t&#233; du fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Et si cela ne marche pas ?&lt;/h3&gt;
&lt;p&gt;- V&#233;rifier que tout les raccourcis SPIP sont bien appareill&#233;s.
&lt;br /&gt;- M'&#233;crire en me fournissant les fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;, pour que je puisse voir o&#249; est le probl&#232;me (ou alors conna&#238;tre LaTeX). C'est encore exp&#233;rimental ! Me dire aussi le syst&#232;me sous lequel le fichier se fabrique.&lt;/p&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;Maintenant que votre livre est r&#233;dig&#233; en version web gr&#226;ce au [squelette documentation-&gt;4039], il s&#039;agit de produire le PDF, pour ensuite l&#039;imprimer. Ceci se passe en deux &#233;tapes : - g&#233;n&#233;rer un ensemble de fichiers &lt;code&gt;.tex&lt;/code&gt; - passer ces fichiers dans le &#171; compilateur &#187; LaTeX pour produire le PDF.&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;{{{Faire une copie locale}}} La g&#233;n&#233;ration de l&#039;ensemble des fichiers &lt;code&gt;.tex&lt;/code&gt; est assez energivore. En effet il faut dans une m&#234;me action : - convertir les raccourcis SPIP en code LaTeX - cr&#233;er l&#039;ensemble des fichiers &lt;code&gt;.tex&lt;/code&gt; depuis la base de donn&#233;e. - les mettre en ZIP. Pour cette raison, nous recommandons lors du passage en &lt;code&gt;.tex&lt;/code&gt; de faire une copie locale du site. Pour ce faire, on se reportera &#224; l&#039;un des tutoriels suivant : - [Pour Mac-&gt;2606] - [Pour Windows-&gt;http://www.generationcyb.net/Installer-SPIP-en-local-avec,1566] Une fois l&#039;installation locale faite, il faut bien s&#251;r r&#233;cup&#233;rer le contenu de la base de donn&#233;e pour la copier en local. Ainsi que les &#233;ventuelles images du dossier IMG. {{{G&#233;n&#233;rer les &lt;code&gt;.tex&lt;/code&gt;}}} Pour g&#233;n&#233;r&#233;r les &lt;code&gt;.tex&lt;/code&gt;, il faudra installer : - le plugin {{latexwheel}}, qui permet de convertir les raccourcis SPIP en code LaTeX. - le plugin {{ziptex}} qui permet d&#039;assembler un ensemble de fichiers &lt;code&gt;.tex&lt;/code&gt; en un zip. Ce plugin n&#233;c&#233;ssite le plugin [Zippeur-&gt;3576]. - le jeu de squelettes {{documentation2latex}} qui proposent des squelettes produisants des fichiers &lt;code&gt;.tex&lt;/code&gt; correspondants au squelette documentations. Une fois cela fait, on se rendra sur la page &lt;code&gt;adressedusiteenlocal/?page=generer-zip&lt;/code&gt;. L&#039;ordinateur va ramer un peu pour g&#233;n&#233;rer les zips. Donc c&#039;est normal que la page ne s&#039;affiche pas tout de suite. Mais apr&#232;s, une fois que la page s&#039;affiche, il suffit de cliquer sur le liens pour r&#233;cuperer le zip. {{{Fabriquer le fichier &lt;code&gt;PDF&lt;/code&gt; &#224; partir des fichiers &lt;code&gt;.tex&lt;/code&gt;}}} - Il faut disposer d&#039;une installation LaTeX. -* Sous Windows : http://miktex.org/ -* Sous Mac : https://www.tug.org/mactex/ -* Sous Linux : https://www.tug.org/texlive/ - En outre -* Si on utilise &lt;code&gt;colorationcode&lt;/code&gt; ou si on cite du code, il faut installer pygments : http://pygments.org/docs/installation/. Il faut du coup faire un peu de ligne de commande. -* Si dans ce code color&#233;, il y a du code SPIP, il faut [installer la coloration syntaxique pour SPIP dans Pygments-&gt;4053]. La d&#233;marche varie selon que l&#039;on utilise la coloration syntaxique ou non : - Si on n&#039;utilise pas la coloration syntaxique, on peut utiliser une interface graphique pour compiler. Il faut ouvrir le fichier &lt;code&gt;documentation.tex&lt;/code&gt; du dossier contenu dans le zip avec le logiciel TeXWorks. Dans le menu d&#233;roulant en haut de la fen&#234;tre, choisir &lt;code&gt;XeLaTeX&lt;/code&gt; puis cliquer sur le bouton vert. &lt;img10335|left&gt; Une premi&#232;re compilation (= transformation du &lt;code&gt;.tex&lt;/code&gt; en &lt;code&gt;.pdf&lt;/code&gt; se lance. Une fois achev&#233;e, il faut cliquer une deuxi&#232;me fois sur le bouton vert. Puis une troisi&#232;me fois, pour s&#039;assurer que le sommaire soit correcte. Une fois cela fait, on trouve le &lt;code&gt;.pdf&lt;/code&gt; &#224; c&#244;t&#233; du fichier &lt;code&gt;.tex&lt;/code&gt; - Si on utilise la coloration syntaxique, on doit utiliser la ligne de commande. Il faut alors se rendre dans le dossier du zip d&#233;compress&#233;. Puis il faut frapper &lt;code&gt;latexmk&lt;/code&gt;. Lorsque l&#039;ex&#233;cution est termin&#233;e (cela peut prendre plus ou moins de temps), on trouve le fichier &lt;code&gt;.pdf&lt;/code&gt; &#224; c&#244;t&#233; du fichier &lt;code&gt;.tex&lt;/code&gt;. {{{Et si cela ne marche pas ?}}} - V&#233;rifier que tout les raccourcis SPIP sont bien appareill&#233;s. - M&#039;&#233;crire en me fournissant les fichiers &lt;code&gt;.tex&lt;/code&gt;, pour que je puisse voir o&#249; est le probl&#232;me (ou alors conna&#238;tre LaTeX). C&#039;est encore exp&#233;rimental ! Me dire aussi le syst&#232;me sous lequel le fichier se fabrique.&lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		
		<enclosure url="http://files.spip.org/spip-zone/documentation2latex.zip" length="10007" type="application/zip" />
		
		<enclosure url="http://files.spip.org/spip-zone/ziptex.zip" length="2823" type="application/zip" />
		

	</item>



	<item>
		<title>Utiliser le squelette &#171; Documentation &#187; pour r&#233;diger un livre</title>
		<link>http://www.spip-contrib.net/Utiliser-le-squelette-Documentation-pour-rediger-un</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Utiliser-le-squelette-Documentation-pour-rediger-un</guid>
		<dc:date>2012-01-17T16:54:06Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>

<category domain="http://www.spip-contrib.net/Livre-avec-SPIP">Livre avec SPIP</category>

		<dc:subject>Hors sommaire</dc:subject>
		<dc:subject>SPIP 3.0</dc:subject>

		<description>
&lt;p&gt;La mani&#232;re la plus simple pour se lancer dans le projet &#171; un livre avec SPIP &#187; est d'utiliser le squelette documentation pour SPIP 3. Ce squelette est celui utilis&#233; par le site de Marcimat Programmer avec SPIP, mais port&#233; sur SPIP 3. Dans cet article, j'explique comment installer et l'utiliser de mani&#232;re &#224; optimiser l'export en .tex. Installation Le squelette est distribu&#233; sous forme de plugin. Il s'installe comme n'importe quel plugin. Toutefois il n&#233;cessite d'avoir SPIP 3 beta2. En outre il a (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Livre-avec-SPIP" rel="directory"&gt;Livre avec SPIP&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/+-Hors-sommaire-+" rel="tag"&gt;Hors sommaire&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-3-0" rel="tag"&gt;SPIP 3.0&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon1568.png?1326819038&quot; width=&quot;800&quot; height=&quot;800&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;La mani&#232;re la plus simple pour se lancer dans le projet &#171; un livre avec SPIP &#187; est d'utiliser le squelette documentation pour SPIP 3.&lt;/p&gt; &lt;p&gt;Ce squelette est celui utilis&#233; par le site de Marcimat &lt;a href=&quot;http://programmer.spip.org/&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;Programmer avec SPIP&lt;/a&gt;, mais port&#233; sur SPIP 3.&lt;/p&gt; &lt;p&gt;Dans cet article, j'explique comment installer et l'utiliser de mani&#232;re &#224; optimiser l'export en &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Installation&lt;/h3&gt;
&lt;p&gt;Le squelette est distribu&#233; sous forme de plugin. &lt;a href=&quot;http://www.spip.net/fr_article3396.html&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;Il s'installe comme n'importe quel plugin&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Toutefois il n&#233;cessite d'avoir &lt;a href=&quot;http://spip-blog.net/SPIP-3-beta-2.html&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;SPIP 3 beta2&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;En outre il a besoin des plugins :
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Le-Squelette-Zpip-dist&quot; class=&#039;spip_in&#039;&gt;ZPIP 1.7.x&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Criteres-precedent-et-suivant&quot; class=&#039;spip_in&#039;&gt;Crit&#232;res &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;precedent&lt;/code&gt; et &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;suivant&lt;/code&gt;&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Saisies&quot; class=&#039;spip_in&#039;&gt;Saisie&lt;/a&gt;
&lt;br /&gt;- &lt;a href=&quot;http://www.spip-contrib.net/Champs-Extras-3&quot; class=&#039;spip_in&#039;&gt;Champ extra 3&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Utilisation&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Arborescence&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Puisque le but est d'utiliser le squelette pour ensuite fabriquer un &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; pour l'impression, il est bon de savoir comment est organis&#233; la hi&#233;rachie des titres dans un fichier LaTeX.
Par d&#233;faut, tout les titres sont num&#233;rot&#233;s automatiquement. Voici les diff&#233;rents niveaux de titre, du plus important au plus faible.&lt;/p&gt;
&lt;table class=&quot;spip&quot;&gt;
&lt;thead&gt;&lt;tr class=&#039;row_first&#039;&gt;&lt;th id=&#039;id700d_c0&#039;&gt;Nom de titre&lt;/th&gt;&lt;th id=&#039;id700d_c1&#039;&gt;Code LaTeX&lt;/th&gt;&lt;th id=&#039;id700d_c2&#039;&gt;Sp&#233;cificit&#233; lors de la conversion en PDF&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&#039;row_odd odd&#039;&gt;
&lt;td headers=&#039;id700d_c0&#039;&gt;Partie&lt;/td&gt;
&lt;td headers=&#039;id700d_c1&#039;&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\part&lt;/code&gt;&lt;/td&gt;
&lt;td headers=&#039;id700d_c2&#039;&gt;Le titre est sur une page de droite d&#233;di&#233;e.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&#039;row_even even&#039;&gt;
&lt;td headers=&#039;id700d_c0&#039;&gt;Chapitre&lt;/td&gt;
&lt;td headers=&#039;id700d_c1&#039;&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\chapter&lt;/code&gt;&lt;/td&gt;
&lt;td headers=&#039;id700d_c2&#039;&gt;Un chapitre commence en haut de page, sur une page de droite.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&#039;row_odd odd&#039;&gt;
&lt;td headers=&#039;id700d_c0&#039;&gt;Section&lt;/td&gt;
&lt;td headers=&#039;id700d_c1&#039;&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\section&lt;/code&gt;&lt;/td&gt;
&lt;td headers=&#039;id700d_c2&#039;&gt;Une section provoque un changement de paragraphe.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&#039;row_even even&#039;&gt;
&lt;td headers=&#039;id700d_c0&#039;&gt;Sous-section&lt;/td&gt;
&lt;td headers=&#039;id700d_c1&#039;&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\subsection&lt;/code&gt;&lt;/td&gt;
&lt;td headers=&#039;id700d_c2&#039;&gt;Une sous-section provoque un changement de paragraphe&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Il existe &#233;galement les niveaux &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\subsubsection&lt;/code&gt;, &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\paragraph&lt;/code&gt; et &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\subparagraph&lt;/code&gt;, mais ces nivaux ne sont pas utilis&#233;s lors de la g&#233;n&#233;ration des fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; par SPIP.&lt;/p&gt; &lt;p&gt;&#192; ces niveaux de titre LaTeX correspondent des nivaux dans la hi&#233;rachie des rubriques.&lt;/p&gt; &lt;p&gt;- Le premier niveau (secteur) correspond &#224; un livre entier. Un secteur correspondant &#224; une langue.
&lt;br /&gt;- Le second niveau correspond &#224; un partie au sens LaTeX (&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\part&lt;/code&gt;). Exemple de rubrique de niveau &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\part&lt;/code&gt; : &lt;a href=&quot;http://programmer.spip.org/-Ecriture-des-squelettes-&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://programmer.spip.org/-Ecriture-des-squelettes-&lt;/a&gt;.
&lt;br /&gt;- Le troisi&#232;me niveau correspond &#224; un chapitre au sens LaTeX (&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\chapter&lt;/code&gt;) &lt;a href=&quot;http://programmer.spip.org/-Les-boucles-&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://programmer.spip.org/-Les-boucles-&lt;/a&gt;.
&lt;br /&gt;- Un article correspond &#224; une section au sens LaTeX (&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\section&lt;/code&gt;) &lt;a href=&quot;http://programmer.spip.org/Syntaxe-des-boucles&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://programmer.spip.org/Syntaxe-des-boucles&lt;/a&gt;.
&lt;br /&gt;- Les raccourcis &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;{{{&#8230;}}}&lt;/code&gt; provoquent des sous-sections. (&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;\subsection&lt;/code&gt;).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Contenu des articles&lt;/strong&gt;
En plus du classique champs titre et texte, chaque article peut avoir un exemple, un exercice et une r&#233;ponse &#224; l'exercice. Le champ PS est &#233;galement utilis&#233;.&lt;/p&gt; &lt;p&gt;Lors de l'export en &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;, les trois champs suppl&#233;mentaires (&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;exemple&lt;/code&gt;, &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;exercice&lt;/code&gt;, &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;r&#233;ponse&lt;/code&gt;) seront encadr&#233;s d'un code signalant qu'il faudra les mettre dans un cadre gris dans le PDF final.&lt;/p&gt; &lt;p&gt;Les champs &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;exemple&lt;/code&gt;, &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;exercice&lt;/code&gt;, &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;r&#233;ponse&lt;/code&gt; et &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;PS&lt;/code&gt; seront pr&#233;c&#233;d&#233;s d'intertitres.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Ordre des rubriques / articles&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Il est possible de ne pas &#233;crire les rubriques / articles dans leur ordre logiques. Pour d&#233;terminer l'ordre des rubriques / articles, il suffit de faire pr&#233;c&#233;der les titres d'un nombre, suivi d'un point, suivi d'un espace :&lt;/p&gt; &lt;p&gt;&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;1. Rubrique qui appara&#238;tra en premier&lt;/code&gt;&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Raccourcis typographique&lt;/h3&gt;
&lt;p&gt;On peut utiliser l'ensemble des raccourcis typographique de SPIP. Si on cite du code, il faut utiliser le plugin &lt;a href=&quot;http://www.spip-contrib.net/Coloration-Code,2938&quot; class=&#039;spip_in&#039;&gt;coloration code&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Un code entre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;cadre&gt;&lt;/code&gt; aura ses lignes num&#233;rot&#233;es, pas un code entre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Par ailleurs, le module LaTeX de gestion du code sources color&#233;s n'est pas capable de couper automatiquement les lignes trop longues : il faut donc les limiter directement au sein des balises &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;cadre&gt;&lt;/code&gt; ou &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;code&gt;&lt;/code&gt; (60 caract&#232;res approximativement, si vous gardez les r&#233;glage de format de papier et de marge standard).&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Production du PDF&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.spip-contrib.net/Fabriquer-les-tex-puis-le-PDF&quot; class=&#039;spip_in&#039;&gt;La production du PDF est d&#233;taill&#233; dans un autre article&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;La mani&#232;re la plus simple pour se lancer dans le projet &#171; un livre avec SPIP &#187; est d&#039;utiliser le squelette documentation pour SPIP 3. Ce squelette est celui utilis&#233; par le site de Marcimat [Programmer avec SPIP-&gt;http://programmer.spip.org/], mais port&#233; sur SPIP 3. Dans cet article, j&#039;explique comment installer et l&#039;utiliser de mani&#232;re &#224; optimiser l&#039;export en &lt;code&gt;.tex&lt;/code&gt;.&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;{{{Installation}}} Le squelette est distribu&#233; sous forme de plugin. [Il s&#039;installe comme n&#039;importe quel plugin-&gt;http://www.spip.net/fr_article3396.html]. Toutefois il n&#233;cessite d&#039;avoir [SPIP 3 beta2-&gt;http://spip-blog.net/SPIP-3-beta-2.html]. En outre il a besoin des plugins : - [ZPIP 1.7.x-&gt;3256] - [Crit&#232;res &lt;code&gt;precedent&lt;/code&gt; et &lt;code&gt;suivant&lt;/code&gt;-&gt;3551] - [Saisie-&gt;3364] - [Champ extra 3-&gt;4028] {{{Utilisation}}} {{Arborescence}} Puisque le but est d&#039;utiliser le squelette pour ensuite fabriquer un &lt;code&gt;.tex&lt;/code&gt; pour l&#039;impression, il est bon de savoir comment est organis&#233; la hi&#233;rachie des titres dans un fichier LaTeX. Par d&#233;faut, tout les titres sont num&#233;rot&#233;s automatiquement. Voici les diff&#233;rents niveaux de titre, du plus important au plus faible. |{{Nom de titre}}|{{Code LaTeX}}|{{Sp&#233;cificit&#233; lors de la conversion en PDF}}| |Partie|&lt;code&gt;\part&lt;/code&gt;|Le titre est sur une page de droite d&#233;di&#233;e.| |Chapitre|&lt;code&gt;\chapter&lt;/code&gt;|Un chapitre commence en haut de page, sur une page de droite.| |Section|&lt;code&gt;\section&lt;/code&gt;|Une section provoque un changement de paragraphe.| |Sous-section|&lt;code&gt;\subsection&lt;/code&gt;|Une sous-section provoque un changement de paragraphe| Il existe &#233;galement les niveaux &lt;code&gt;\subsubsection&lt;/code&gt;, &lt;code&gt;\paragraph&lt;/code&gt; et &lt;code&gt;\subparagraph&lt;/code&gt;, mais ces nivaux ne sont pas utilis&#233;s lors de la g&#233;n&#233;ration des fichiers &lt;code&gt;.tex&lt;/code&gt; par SPIP. &#192; ces niveaux de titre LaTeX correspondent des nivaux dans la hi&#233;rachie des rubriques. - Le premier niveau (secteur) correspond &#224; un livre entier. Un secteur correspondant &#224; une langue. - Le second niveau correspond &#224; un partie au sens LaTeX (&lt;code&gt;\part&lt;/code&gt;). Exemple de rubrique de niveau &lt;code&gt;\part&lt;/code&gt; : http://programmer.spip.org/-Ecriture-des-squelettes-. - Le troisi&#232;me niveau correspond &#224; un chapitre au sens LaTeX (&lt;code&gt;\chapter&lt;/code&gt;) http://programmer.spip.org/-Les-boucles-. - Un article correspond &#224; une section au sens LaTeX (&lt;code&gt;\section&lt;/code&gt;) http://programmer.spip.org/Syntaxe-des-boucles. - Les raccourcis &lt;code&gt;{{{&#8230;}}}&lt;/code&gt; provoquent des sous-sections. (&lt;code&gt;\subsection&lt;/code&gt;). {{Contenu des articles}} En plus du classique champs titre et texte, chaque article peut avoir un exemple, un exercice et une r&#233;ponse &#224; l&#039;exercice. Le champ PS est &#233;galement utilis&#233;. Lors de l&#039;export en &lt;code&gt;.tex&lt;/code&gt;, les trois champs suppl&#233;mentaires (&lt;code&gt;exemple&lt;/code&gt;, &lt;code&gt;exercice&lt;/code&gt;, &lt;code&gt;r&#233;ponse&lt;/code&gt;) seront encadr&#233;s d&#039;un code signalant qu&#039;il faudra les mettre dans un cadre gris dans le PDF final. Les champs &lt;code&gt;exemple&lt;/code&gt;, &lt;code&gt;exercice&lt;/code&gt;, &lt;code&gt;r&#233;ponse&lt;/code&gt; et &lt;code&gt;PS&lt;/code&gt; seront pr&#233;c&#233;d&#233;s d&#039;intertitres. {{Ordre des rubriques / articles}} Il est possible de ne pas &#233;crire les rubriques / articles dans leur ordre logiques. Pour d&#233;terminer l&#039;ordre des rubriques / articles, il suffit de faire pr&#233;c&#233;der les titres d&#039;un nombre, suivi d&#039;un point, suivi d&#039;un espace : &lt;code&gt;1. Rubrique qui appara&#238;tra en premier&lt;/code&gt; {{{Raccourcis typographique}}} On peut utiliser l&#039;ensemble des raccourcis typographique de SPIP. Si on cite du code, il faut utiliser le plugin [coloration code-&gt;2938]. Un code entre &lt;code&gt;&lt;cadre&gt;&lt;/code&gt; aura ses lignes num&#233;rot&#233;es, pas un code entre &lt;code&gt;&lt;code&gt;&lt;/code&gt;. Par ailleurs, le module LaTeX de gestion du code sources color&#233;s n&#039;est pas capable de couper automatiquement les lignes trop longues : il faut donc les limiter directement au sein des balises &lt;code&gt;&lt;cadre&gt;&lt;/code&gt; ou &lt;code&gt;&lt;code&gt;&lt;/code&gt; (60 caract&#232;res approximativement, si vous gardez les r&#233;glage de format de papier et de marge standard). {{{Production du PDF}}} [La production du PDF est d&#233;taill&#233; dans un autre article-&gt;4041].&lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		
		<enclosure url="http://files.spip.org/spip-zone/documentation_2.zip" length="361467" type="application/zip" />
		

	</item>



	<item>
		<title>Introduction &#224; la cr&#233;ation d'un livre</title>
		<link>http://www.spip-contrib.net/Introduction-a-la-creation-d-un-livre</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Introduction-a-la-creation-d-un-livre</guid>
		<dc:date>2012-01-17T16:53:55Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>

<category domain="http://www.spip-contrib.net/Livre-avec-SPIP">Livre avec SPIP</category>

		<dc:subject>SPIP 3.0</dc:subject>

		<description>
&lt;p&gt;Pour produire un livre avec SPIP, on peut produire un PDF. Une des solutions est d'utiliser LaTeX. C'est celle que nous avons choisie. SPIP et LaTeX SPIP permet de produire n'importe quel fichier de type text. En g&#233;n&#233;ral, il produit des fichiers HTML. Mais avec le language de boucle de SPIP, on peut aussi produire des javascript, des css, etc. L'id&#233;e d'un livre avec SPIP est la suivante : produire tant&#244;t du HTML, pour une consultation avec un navigateur, tant&#244;t des fichiers .tex. Ces fichiers (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Livre-avec-SPIP" rel="directory"&gt;Livre avec SPIP&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/SPIP-3-0" rel="tag"&gt;SPIP 3.0&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon1568.png?1326819038&quot; width=&quot;800&quot; height=&quot;800&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Pour produire un livre avec SPIP, on peut produire un PDF. Une des solutions est d'utiliser LaTeX. C'est celle que nous avons choisie.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;SPIP et LaTeX&lt;/h3&gt;
&lt;p&gt;SPIP permet de produire n'importe quel fichier de type &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;text&lt;/code&gt;. En g&#233;n&#233;ral, il produit des fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;HTML&lt;/code&gt;. Mais avec le language de boucle de SPIP, on peut aussi produire des javascript, des css, etc.&lt;/p&gt; &lt;p&gt;L'id&#233;e d'un livre avec SPIP est la suivante : produire tant&#244;t du HTML, pour une consultation avec un navigateur, tant&#244;t des fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Ces fichiers sont des fichiers &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;LaTeX&lt;/code&gt;. &#192; partir d'un ensemble de fichiers LaTeX, il est possible en utilisant le compilateur LaTeX&lt;span class=&quot;spip_note_ref&quot;&gt; [&lt;a href=&#039;#nb3-1&#039; class=&#039;spip_note&#039; rel=&#039;footnote&#039; title=&#039;Voir l'article de Wikip&#233;dia pour plus de d&#233;tails sur ce qu'est (...)&#039; id=&#039;nh3-1&#039;&gt;1&lt;/a&gt;]&lt;/span&gt; de produire un fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;PDF&lt;/code&gt;. C'est ce fichier qui devra &#234;tre envoy&#233; &#224; l'impression.&lt;/p&gt; &lt;p&gt;L'avantage d'utiliser LaTeX est :
&lt;br /&gt;- utiliser un logiciel libre plut&#244;t que PrinceXml (qui permet de convertir du HTML en PDF, mais qui est propri&#233;taire)
&lt;br /&gt;- utiliser un logiciel r&#233;put&#233; pour ses grandes qualit&#233;s typographiques (r&#233;putation qui n'est pas vol&#233;e).&lt;/p&gt; &lt;p&gt;Au final, on peut r&#233;sumer ainsi le processus de production d'un livre avec SPIP.&lt;/p&gt;
&lt;dl class=&#039;spip_document_10325 spip_documents spip_documents_center&#039;&gt;
&lt;dt&gt;&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L441xH719/livre-8364a.png&#039; width=&#039;441&#039; height=&#039;719&#039; alt=&#039;PNG - 23.7&#160;ko&#039; style=&#039;&#039; /&gt;&lt;/dt&gt;
&lt;dt class=&#039;crayon document-titre-10325 spip_doc_titre&#039; style=&#039;width:350px;&#039;&gt;&lt;strong&gt;Sch&#233;ma de production d'un livre avec SPIP&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;
&lt;p&gt;Pour ce projet, nous n'utilisons pas LaTeX, mais XeLaTeX qui est une variante de LaTeX ayant une gestion plus correcte de l'encodage Unicode&lt;span class=&quot;spip_note_ref&quot;&gt; [&lt;a href=&#039;#nb3-2&#039; class=&#039;spip_note&#039; rel=&#039;footnote&#039; title=&#039;Sur les histoires d'encodage, voir le m&#233;morable article sur la tour de Babel (...)&#039; id=&#039;nh3-2&#039;&gt;2&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Une structure de livre flexible&lt;/h3&gt;
&lt;p&gt;De m&#234;me que SPIP peut produire n'importe quelle structure de page HTML, il peut produire n'importe quelle structure de fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;C'est pourquoi le syst&#232;me est divis&#233; en deux plugins :
&lt;br /&gt;- LaTeXWheel qui permet &#224; SPIP de transformer ses raccourcis typographiques (&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;{&lt;/code&gt;,&lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;-*&lt;/code&gt; etc.) en code LaTeX.
&lt;br /&gt;- ZipTeX qui permet d'assembler en un seul ZIP une s&#233;rie de fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;. En effet, il est possible de cr&#233;er des sous-fichiers LaTeX, un peu comme on cr&#233;e des sous-squelettes avec &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;INCLURE&gt;&lt;/code&gt;. Par cons&#233;quent, on demandera &#224; SPIP de produire un zip contenant un ensemble de fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt;, plut&#244;t qu'un seul fichier &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;.tex&lt;/code&gt; de grande taille.&lt;/p&gt; &lt;p&gt;Un squelette correspondant &#224; la structure du site &lt;a href=&quot;http://programmer.spip.org/&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://programmer.spip.org&lt;/a&gt; a &#233;t&#233; concu. Il propose ainsi une structure possible. Il s'appuie sur ces deux plugins.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Comment aborder ce projet &#171; Un livre avec SPIP &#187;&lt;/h3&gt;
&lt;p&gt;Cette documentation se divise en deux :&lt;/p&gt; &lt;p&gt;- Une documentation pour les personnes ne connaissant ni LaTeX ni le m&#233;canisme des boucles de SPIP. Cette documentation se subdivise en deux :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Installer le squelette Documentation (celui de &lt;a href=&quot;http://programmer.spip.org/&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://programmer.spip.org&lt;/a&gt;) et &lt;a href=&quot;http://www.spip-contrib.net/Utiliser-le-squelette-Documentation-pour-rediger-un&quot; class=&#039;spip_in&#039;&gt;s'en servir pour faire un livre&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.spip-contrib.net/Fabriquer-les-tex-puis-le-PDF&quot; class=&#039;spip_in&#039;&gt;Exporter le contenu du livre en LaTeX, puis le convertir en PDF (A4)&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;- Une documentation, encore &#224; &#233;crire, pour les personnes souhaitant personnaliser leur livre, ce qui n&#233;c&#233;ssite de conna&#238;tre :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;a href=&quot;http://programmer.spip.org/-Ecriture-des-squelettes&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;Le syst&#232;me de squelettes de SPIP&lt;/a&gt;.&lt;/li&gt;&lt;li&gt; Les bases de LaTeX. Pour les apprendre on pourra utiliser le &lt;a href=&quot;https://fr.wikibooks.org/wiki/LaTeX&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;wikibook sur LaTeX&lt;/a&gt;, en attendant que l'auteur sorte son propre livre.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Cette documentation se d&#233;compose en plusieurs parties :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;a href=&quot;http://www.spip-contrib.net/Tutoriel-produire-sa-propre-structure-de-livre&quot; class=&#039;spip_in&#039;&gt;Tutoriel : produire sa propre structure de livre&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.spip-contrib.net/Reference-de-LaTeXWheel&quot; class=&#039;spip_in&#039;&gt;R&#233;f&#233;rence de LaTeXWheel&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.spip-contrib.net/Reference-de-ZipTeX&quot; class=&#039;spip_in&#039;&gt;R&#233;f&#233;rence de ZipTeX&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#039;nb3-1&#039;&gt;
&lt;p&gt;&lt;span class=&quot;spip_note_ref&quot;&gt;[&lt;a href=&#039;#nh3-1&#039; class=&#039;spip_note&#039; title=&#039;Notes 3-1&#039; rev=&#039;footnote&#039;&gt;1&lt;/a&gt;] &lt;/span&gt;Voir l'article de Wikip&#233;dia pour plus de d&#233;tails sur ce qu'est &lt;a href=&quot;http://fr.wikipedia.org/wiki/LaTeX&quot; class=&#039;spip_glossaire&#039; rel=&#039;external&#039;&gt;LaTeX&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#039;nb3-2&#039;&gt;
&lt;p&gt;&lt;span class=&quot;spip_note_ref&quot;&gt;[&lt;a href=&#039;#nh3-2&#039; class=&#039;spip_note&#039; title=&#039;Notes 3-2&#039; rev=&#039;footnote&#039;&gt;2&lt;/a&gt;] &lt;/span&gt;Sur les histoires d'encodage, voir &lt;a href=&quot;http://www.uzine.net/article1785.html&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;le m&#233;morable article sur la tour de Babel du net&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;Pour produire un livre avec SPIP, on peut produire un PDF. Une des solutions est d&#039;utiliser LaTeX. C&#039;est celle que nous avons choisie.&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;{{{SPIP et LaTeX}}} SPIP permet de produire n&#039;importe quel fichier de type &lt;code&gt;text&lt;/code&gt;. En g&#233;n&#233;ral, il produit des fichiers &lt;code&gt;HTML&lt;/code&gt;. Mais avec le language de boucle de SPIP, on peut aussi produire des javascript, des css, etc. L&#039;id&#233;e d&#039;un livre avec SPIP est la suivante : produire tant&#244;t du HTML, pour une consultation avec un navigateur, tant&#244;t des fichiers &lt;code&gt;.tex&lt;/code&gt;. Ces fichiers sont des fichiers &lt;code&gt;LaTeX&lt;/code&gt;. &#192; partir d&#039;un ensemble de fichiers LaTeX, il est possible en utilisant le compilateur LaTeX[[Voir l&#039;article de Wikip&#233;dia pour plus de d&#233;tails sur ce qu&#039;est [?LaTeX].]] de produire un fichier &lt;code&gt;PDF&lt;/code&gt;. C&#039;est ce fichier qui devra &#234;tre envoy&#233; &#224; l&#039;impression. L&#039;avantage d&#039;utiliser LaTeX est :
- utiliser un logiciel libre plut&#244;t que PrinceXml (qui permet de convertir du HTML en PDF, mais qui est propri&#233;taire)
- utiliser un logiciel r&#233;put&#233; pour ses grandes qualit&#233;s typographiques (r&#233;putation qui n&#039;est pas vol&#233;e). Au final, on peut r&#233;sumer ainsi le processus de production d&#039;un livre avec SPIP. &lt;doc10325|center&gt; Pour ce projet, nous n&#039;utilisons pas LaTeX, mais XeLaTeX qui est une variante de LaTeX ayant une gestion plus correcte de l&#039;encodage Unicode[[Sur les histoires d&#039;encodage, voir [le m&#233;morable article sur la tour de Babel du net-&gt;http://www.uzine.net/article1785.html].]]. {{{Une structure de livre flexible}}} De m&#234;me que SPIP peut produire n&#039;importe quelle structure de page HTML, il peut produire n&#039;importe quelle structure de fichier &lt;code&gt;.tex&lt;/code&gt;. C&#039;est pourquoi le syst&#232;me est divis&#233; en deux plugins :
- LaTeXWheel qui permet &#224; SPIP de transformer ses raccourcis typographiques (&lt;code&gt;{&lt;/code&gt;,&lt;code&gt;-*&lt;/code&gt; etc.) en code LaTeX.
- ZipTeX qui permet d&#039;assembler en un seul ZIP une s&#233;rie de fichier &lt;code&gt;.tex&lt;/code&gt;. En effet, il est possible de cr&#233;er des sous-fichiers LaTeX, un peu comme on cr&#233;e des sous-squelettes avec &lt;code&gt;&lt;INCLURE&gt;&lt;/code&gt;. Par cons&#233;quent, on demandera &#224; SPIP de produire un zip contenant un ensemble de fichier &lt;code&gt;.tex&lt;/code&gt;, plut&#244;t qu&#039;un seul fichier &lt;code&gt;.tex&lt;/code&gt; de grande taille. Un squelette correspondant &#224; la structure du site http://programmer.spip.org a &#233;t&#233; concu. Il propose ainsi une structure possible. Il s&#039;appuie sur ces deux plugins. {{{Comment aborder ce projet &#171; Un livre avec SPIP &#187;}}} Cette documentation se divise en deux : - Une documentation pour les personnes ne connaissant ni LaTeX ni le m&#233;canisme des boucles de SPIP. Cette documentation se subdivise en deux :
-* Installer le squelette Documentation (celui de http://programmer.spip.org) et [s&#039;en servir pour faire un livre-&gt;4039].
-* [Exporter le contenu du livre en LaTeX, puis le convertir en PDF (A4)-&gt;4041]. - Une documentation, encore &#224; &#233;crire, pour les personnes souhaitant personnaliser leur livre, ce qui n&#233;c&#233;ssite de conna&#238;tre :
-* [Le syst&#232;me de squelettes de SPIP-&gt;http://programmer.spip.org/-Ecriture-des-squelettes].
-* Les bases de LaTeX. Pour les apprendre on pourra utiliser le [wikibook sur LaTeX-&gt;https://fr.wikibooks.org/wiki/LaTeX], en attendant que l&#039;auteur sorte son propre livre. Cette documentation se d&#233;compose en plusieurs parties :
-* [-&gt;4045]
-* [-&gt;4051]
-* [-&gt;4052]
&lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		
		<enclosure url="http://www.spip-contrib.net/IMG/zip/ziptex.zip" length="216998" type="application/zip" />
		
		<enclosure url="http://www.spip-contrib.net/IMG/pdf/documentation.pdf" length="906365" type="application/pdf" />
		

	</item>



	<item>
		<title>Mettre son site en gr&#232;ve</title>
		<link>http://www.spip-contrib.net/Mettre-son-site-en-greve</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Mettre-son-site-en-greve</guid>
		<dc:date>2012-01-16T17:00:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ma&#239;eul</dc:creator>

<category domain="http://www.spip-contrib.net/Greves">Gr&#232;ves</category>

		<dc:subject>SPIP 2.1</dc:subject>
		<dc:subject>SPIP 3.0</dc:subject>

		<description>
&lt;p&gt;La gr&#232;ve des sites web est un moyen qui se d&#233;veloppe de plus en plus pour protester contre certains projets de lois mena&#231;ant les libert&#233;s num&#233;riques, par exemple contre le projet SOPA. Cela consiste &#224; emp&#234;cher l'acc&#232;s au contenu d'un site pendant un temps donn&#233;, en mettant &#224; la place un texte explicatif. Le plugin En gr&#232;ve permet de programmer automatiquement la mise en gr&#232;ve de son site, entre deux moments. Installation Il s'installe comme n'importe quel plugin. Il n&#233;cessite le plugin saisie. Sous (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Greves" rel="directory"&gt;Gr&#232;ves&lt;/a&gt;

/ 
&lt;a href="http://www.spip-contrib.net/SPIP-2-1" rel="tag"&gt;SPIP 2.1&lt;/a&gt;, 
&lt;a href="http://www.spip-contrib.net/SPIP-3-0" rel="tag"&gt;SPIP 3.0&lt;/a&gt;

		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon1570.gif?1326726953&quot; width=&quot;390&quot; height=&quot;390&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;La gr&#232;ve des sites web est un moyen qui se d&#233;veloppe de plus en plus pour protester contre certains projets de lois mena&#231;ant les libert&#233;s num&#233;riques, &lt;a href=&quot;https://www.revoltenumerique.herbesfolles.org/2012/01/15/contre-la-censure-dinternet-rejoignons-le-blackout-du-web-le-1801/&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;par exemple contre le projet SOPA&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Cela consiste &#224; emp&#234;cher l'acc&#232;s au contenu d'un site pendant un temps donn&#233;, en mettant &#224; la place un texte explicatif.&lt;/p&gt; &lt;p&gt;Le plugin &lt;strong&gt;En gr&#232;ve&lt;/strong&gt; permet de programmer automatiquement la mise en gr&#232;ve de son site, entre deux moments.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Il s'installe &lt;a href=&quot;http://www.spip.net/fr_article3396.html&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;comme n'importe quel plugin&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.spip-contrib.net/Saisies&quot; class=&#039;spip_in&#039;&gt;Il n&#233;cessite le plugin saisie&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Sous SPIP 2.1 il &lt;a href=&quot;http://www.spip-contrib.net/SPIP-Bonux&quot; class=&#039;spip_in&#039;&gt;n&#233;cessite aussi le plugin spip-bonux&lt;/a&gt;.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Utilisation&lt;/h3&gt;
&lt;p&gt;Une fois le plugin correctement install&#233;, les webmestres peuvent ajouter des gr&#232;ves sur le site.&lt;/p&gt; &lt;p&gt;Pour ce faire, il faut se rendre dans :
&lt;br /&gt;- Navigation -&gt; Gr&#232;ves sous SPIP 2.1
&lt;br /&gt;- &#201;dition -&gt; Gr&#232;ves sous SPIP 2.1 &lt;a href=&quot;http://www.spip-contrib.net/Bandeau,3556&quot; class=&#039;spip_in&#039;&gt;avec le nouveau bandeau&lt;/a&gt; ou sous SPIP 3.&lt;/p&gt; &lt;p&gt;Puis cliquer sur &#171; Cr&#233;er une nouvelle gr&#232;ve &#187;.&lt;/p&gt; &lt;p&gt;Dans le formulaire qui appara&#238;t, mettre un titre &#224; la gr&#232;ve, un texte explicatif (on peut utiliser les raccourcis SPIP), une date de d&#233;but et une date de fin.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Fonctionnement&lt;/h3&gt;
&lt;p&gt;Entre la date de d&#233;but de la gr&#232;ve et la date de fin, il n'est plus possible de consulter quoique ce soit sur le site : les pages sont automatiquement redirig&#233;es vers le squelette &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;greve.html&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;La seule exception est la page &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;login&lt;/code&gt;, pour permettre aux jaunes&lt;span class=&quot;spip_note_ref&quot;&gt; [&lt;a href=&#039;#nb4-1&#039; class=&#039;spip_note&#039; rel=&#039;footnote&#039; title=&#039;Dans le vocabulaire ouvrier, un &#171; jaune &#187; est un tra&#238;tre &#224; la cause, un briseur (...)&#039; id=&#039;nh4-1&#039;&gt;1&lt;/a&gt;]&lt;/span&gt; de travailler le temps de la gr&#232;ve.&lt;/p&gt; &lt;p&gt;&#192; noter que les heures correspondent au fuseau horaire du serveur.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;&#192; faire&lt;/h3&gt;
&lt;p&gt;- Permettre de supprimer les vieilles gr&#232;ves.
&lt;br /&gt;- Permettre de mettre un logo. En attendant, on peut mettre une image ins&#233;r&#233;e via un raccourci classique &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&lt;imgxxx&gt;&lt;/code&gt;.
&lt;br /&gt;- Configuration avanc&#233;e ?&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#039;nb4-1&#039;&gt;
&lt;p&gt;&lt;span class=&quot;spip_note_ref&quot;&gt;[&lt;a href=&#039;#nh4-1&#039; class=&#039;spip_note&#039; title=&#039;Notes 4-1&#039; rev=&#039;footnote&#039;&gt;1&lt;/a&gt;] &lt;/span&gt;Dans le vocabulaire ouvrier, un &#171; jaune &#187; est un tra&#238;tre &#224; la cause, un briseur de gr&#232;ve. Voir &lt;a href=&quot;https://fr.wikipedia.org/wiki/Syndicalisme_jaune&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;https://fr.wikipedia.org/wiki/Syndicalisme_jaune&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;&lt;a href=&quot;http://www.gerdarntz.org/content/gmdh0200102&quot; class=&#039;spip_out&#039; rel=&#039;external&#039;&gt;Le logo est de Gerd Arnzt&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;div class='raw_chapo'&gt;La gr&#232;ve des sites web est un moyen qui se d&#233;veloppe de plus en plus pour protester contre certains projets de lois mena&#231;ant les libert&#233;s num&#233;riques, [par exemple contre le projet SOPA-&gt;https://www.revoltenumerique.herbesfolles.org/2012/01/15/contre-la-censure-dinternet-rejoignons-le-blackout-du-web-le-1801/]. Cela consiste &#224; emp&#234;cher l&#039;acc&#232;s au contenu d&#039;un site pendant un temps donn&#233;, en mettant &#224; la place un texte explicatif. Le plugin {{En gr&#232;ve}} permet de programmer automatiquement la mise en gr&#232;ve de son site, entre deux moments. &lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;{{Installation}} Il s&#039;installe [comme n&#039;importe quel plugin-&gt;http://www.spip.net/fr_article3396.html]. [Il n&#233;cessite le plugin saisie-&gt;3364]. Sous SPIP 2.1 il [n&#233;cessite aussi le plugin spip-bonux-&gt;2857]. {{{Utilisation}}} Une fois le plugin correctement install&#233;, les webmestres peuvent ajouter des gr&#232;ves sur le site. Pour ce faire, il faut se rendre dans : - Navigation -&gt; Gr&#232;ves sous SPIP 2.1 - &#201;dition -&gt; Gr&#232;ves sous SPIP 2.1 [avec le nouveau bandeau-&gt;3556] ou sous SPIP 3. Puis cliquer sur &#171; Cr&#233;er une nouvelle gr&#232;ve &#187;. Dans le formulaire qui appara&#238;t, mettre un titre &#224; la gr&#232;ve, un texte explicatif (on peut utiliser les raccourcis SPIP), une date de d&#233;but et une date de fin. {{{Fonctionnement}}} Entre la date de d&#233;but de la gr&#232;ve et la date de fin, il n&#039;est plus possible de consulter quoique ce soit sur le site : les pages sont automatiquement redirig&#233;es vers le squelette &lt;code&gt;greve.html&lt;/code&gt;. La seule exception est la page &lt;code&gt;login&lt;/code&gt;, pour permettre aux jaunes[[Dans le vocabulaire ouvrier, un &#171; jaune &#187; est un tra&#238;tre &#224; la cause, un briseur de gr&#232;ve. Voir https://fr.wikipedia.org/wiki/Syndicalisme_jaune.]] de travailler le temps de la gr&#232;ve. &#192; noter que les heures correspondent au fuseau horaire du serveur. {{{&#192; faire}}} - Permettre de supprimer les vieilles gr&#232;ves. - Permettre de mettre un logo. En attendant, on peut mettre une image ins&#233;r&#233;e via un raccourci classique &lt;code&gt;&lt;imgxxx&gt;&lt;/code&gt;. - Configuration avanc&#233;e ?&lt;/div&gt;&lt;!--.rss_texte--&gt;
		&lt;div class='raw_ps'&gt;[Le logo est de Gerd Arnzt-&gt;http://www.gerdarntz.org/content/gmdh0200102].&lt;/div&gt;&lt;!--.rss_ps--&gt;

		</content:encoded>
]

		
		<enclosure url="http://files.spip.org/spip-zone/greves.zip" length="17614" type="application/zip" />
		

	</item>



	<item>
		<title>GIS 3 - int&#233;gration de cartes KML</title>
		<link>http://www.spip-contrib.net/GIS-3-integration-de-cartes-KML</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/GIS-3-integration-de-cartes-KML</guid>
		<dc:date>2012-01-16T15:49:35Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Matthieu Marcillaud</dc:creator>

<category domain="http://www.spip-contrib.net/GIS">GIS</category>


		<description>
&lt;p&gt;J'ai eu aujourd'hui &#224; int&#233;grer une carte KML de 4 d&#233;partements d'une r&#233;gion. Nous allons d&#233;crire ici comment cela se passe avec GIS 3 pour SPIP 3. Nous d&#233;crivons ici l'ajout de calques KML superpos&#233;s &#224; une carte. Voici le r&#233;sultat : chaque d&#233;partement du Poitou-Charentes est surlign&#233; l&#233;g&#232;rement par une couleur jaune pale, en partie transparente et avec un contour marron. Tout d'abord, il nous faut les fichiers KML. Si vous n'en avez pas, vous pouvez par exemple en choisir sur le site (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/GIS" rel="directory"&gt;GIS&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class=&quot;spip_logos&quot; alt=&quot;&quot; align=&quot;right&quot; src=&quot;http://www.spip-contrib.net/IMG/rubon663.jpg?1222890224&quot; width=&quot;333&quot; height=&quot;242&quot; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;J'ai eu aujourd'hui &#224; int&#233;grer une carte KML de 4 d&#233;partements d'une r&#233;gion. Nous allons d&#233;crire ici comment cela se passe avec GIS 3 pour SPIP 3.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Nous d&#233;crivons ici l'ajout de calques KML superpos&#233;s &#224; une carte.&lt;/p&gt; &lt;p&gt;Voici le r&#233;sultat : chaque d&#233;partement du Poitou-Charentes est surlign&#233; l&#233;g&#232;rement par une couleur jaune pale, en partie transparente et avec un contour marron.&lt;/p&gt; &lt;p&gt;&lt;span class=&#039;spip_document_10323 spip_documents spip_documents_center&#039;&gt;
&lt;img src=&#039;http://www.spip-contrib.net/local/cache-vignettes/L520xH345/carte-2-794a1.png&#039; width=&#039;520&#039; height=&#039;345&#039; alt=&quot;Carte avec KML superpos&#233;s&quot; title=&quot;Carte avec KML superpos&#233;s&quot; style=&#039;&#039; /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Tout d'abord, il nous faut les fichiers KML. Si vous n'en avez pas, vous pouvez par exemple en choisir sur le site &lt;a href=&quot;http://www.gitesdegaule.fr/KaraMeLise/choixcouleur.php&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://www.gitesdegaule.fr/KaraMeLise/choixcouleur.php&lt;/a&gt; qui vous donnera un zip avec un fichier KML par d&#233;partement fran&#231;ais. C'est approximatif&lt;span class=&quot;spip_note_ref&quot;&gt; [&lt;a href=&#039;#nb5-1&#039; class=&#039;spip_note&#039; rel=&#039;footnote&#039; title=&#039;Par exemple la Charente Maritime n'a pas l'&#238;le de R&#233; et l'&#238;le d'Ol&#233;ron&#039; id=&#039;nh5-1&#039;&gt;1&lt;/a&gt;]&lt;/span&gt; mais c'est mieux que rien. Il doit certainement y avoir d'autres sources pour ce genre de KML quelque part. Et n'h&#233;sitez pas &#224; poster vos sources dans les commentaires de l'article !&lt;/p&gt; &lt;p&gt;Les KML r&#233;cup&#233;r&#233;s sont plac&#233;s quelque part dans un dossier de votre plugin ou du r&#233;pertoire squelettes. Pour ma part, c'&#233;tait dans un r&#233;pertoire &#171; kml &#187; (original non ?)&lt;/p&gt; &lt;p&gt;Ensuite il reste plus qu'&#224; demander l'appel de ces KML en m&#234;me temps que la carte.
Voici comment j'ai proc&#233;d&#233; pour afficher les points des articles d'une rubrique :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_spip2 cadre spip_cadre&quot;&gt;&lt;div class=&quot;spip2&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#INCLURE&lt;/span&gt;&lt;span style=&quot;color: #74B900;&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;fond=modeles/carte_gis,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #74B900;&quot;&gt; objets=articles,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #74B900;&quot;&gt; id_rubrique=&lt;span style=&quot;color: #CA5200;&quot;&gt;#ID_RUBRIQUE&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #74B900;&quot;&gt; zoom=&lt;span style=&quot;color: #CA5200;&quot;&gt;#CONFIG&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;gis/zoom&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #74B900;&quot;&gt; lat=&lt;span style=&quot;color: #CA5200;&quot;&gt;#CONFIG&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;gis/lat&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #74B900;&quot;&gt; lon=&lt;span style=&quot;color: #CA5200;&quot;&gt;#CONFIG&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;gis/lon&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #74B900;&quot;&gt; controle_type=non,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #74B900;&quot;&gt; kml=&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#LISTE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #74B900;&quot;&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#CHEMIN&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;kml/&lt;span style=&quot;&quot;&gt;16&lt;/span&gt;.kml&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|timestamp&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|url_absolue&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #74B900;&quot;&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#CHEMIN&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;kml/&lt;span style=&quot;&quot;&gt;17&lt;/span&gt;.kml&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|timestamp&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|url_absolue&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #74B900;&quot;&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#CHEMIN&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;kml/&lt;span style=&quot;&quot;&gt;86&lt;/span&gt;.kml&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|timestamp&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|url_absolue&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #74B900;&quot;&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #CA5200;&quot;&gt;#CHEMIN&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#123;&lt;/span&gt;kml/&lt;span style=&quot;&quot;&gt;79&lt;/span&gt;.kml&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|timestamp&lt;/span&gt;&lt;span style=&quot;color: #E1861A;&quot;&gt;|url_absolue&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&#125;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/e90869287a89cefcaaefd9a429f0d80e.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Par rapport &#224; une utilisation habituelle de GIS, ce qui change est la pr&#233;sence de l'option &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;kml&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Cette option accepte une ou plusieurs entr&#233;es et types d'entr&#233;es :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; un unique &#233;l&#233;ment ou un tableau comme ici, cr&#233;&#233; avec #LISTE&lt;/li&gt;&lt;li&gt; pour chaque &#233;l&#233;ment, un identifiant ou une url absolue.&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; Un identifiant correspond &#224; un num&#233;ro de document (id_document), document qui est alors un fichier KML donc, sinon &#231;a n'a pas d'int&#233;r&#234;t !&lt;/li&gt;&lt;li&gt; Un fichier en url absolue, comme l'exemple, pointe sur un kml. On remarque ici la pr&#233;sence du filtre &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|timestamp&lt;/code&gt;, qui permet de donner un identifiant &#224; l'URL en fonction de la date de mise &#224; jour du fichier sur le serveur, parce que sinon, Google (ou les autres API de carte) met en cache votre fichier (1 cache pour 1 URL) et en phase de test c'est tr&#232;s ennuyant car changer le fichier kml sans changer son nom ne modifie alors pas la carte g&#233;n&#233;r&#233;e... pas pratique. Donc, en r&#233;sum&#233;, vive &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;|timestamp&lt;/code&gt; !&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Notes sur GIS 2, SPIP 2.1 et les KML&lt;/h3&gt;
&lt;p&gt;GIS 2 pour SPIP 2.1 acc&#232;pte aussi des kml, avec la limitation de ne pouvoir en mettre qu'un seul, c'est &#224; dire que l'option kml n'accepte pas d'entr&#233;e tableau (du moins &#224; l'heure o&#249; j'&#233;cris).&lt;/p&gt; &lt;p&gt;Par ailleurs pour &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;#LISTE&lt;/code&gt; en SPIP 2.1, utilisez le plugin &#171; It&#233;rateurs &#187;, sinon utilisez &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;#ARRAY&lt;/code&gt;, mais la question ne se pose pas trop pour GIS 2, puisqu'il ne prend pas de tableau :)&lt;/p&gt; &lt;p&gt;Voil&#224;, je crois que tout est dit !&lt;/p&gt; &lt;p&gt;Bonne utilisation de KML avec GIS :)&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#039;nb5-1&#039;&gt;
&lt;p&gt;&lt;span class=&quot;spip_note_ref&quot;&gt;[&lt;a href=&#039;#nh5-1&#039; class=&#039;spip_note&#039; title=&#039;Notes 5-1&#039; rev=&#039;footnote&#039;&gt;1&lt;/a&gt;] &lt;/span&gt;Par exemple la Charente Maritime n'a pas l'&#238;le de R&#233; et l'&#238;le d'Ol&#233;ron&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Pour ceux qui cherchent les ic&#244;nes de marqueurs, elles ont &#233;t&#233; prises ici : &lt;a href=&quot;http://mapicons.nicolasmollet.com/&quot; class=&#039;spip_url spip_out auto&#039; rel=&#039;nofollow external&#039;&gt;http://mapicons.nicolasmollet.com/&lt;/a&gt; , une vraie mine pour l'iconographie de cartographie.&lt;/p&gt;&lt;/div&gt;
&lt;div class='raw_chapo'&gt;J&#039;ai eu aujourd&#039;hui &#224; int&#233;grer une carte KML de 4 d&#233;partements d&#039;une r&#233;gion. Nous allons d&#233;crire ici comment cela se passe avec GIS 3 pour SPIP 3. &lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;Nous d&#233;crivons ici l&#039;ajout de calques KML superpos&#233;s &#224; une carte. Voici le r&#233;sultat : chaque d&#233;partement du Poitou-Charentes est surlign&#233; l&#233;g&#232;rement par une couleur jaune pale, en partie transparente et avec un contour marron. &lt;img10323|center&gt; Tout d&#039;abord, il nous faut les fichiers KML. Si vous n&#039;en avez pas, vous pouvez par exemple en choisir sur le site http://www.gitesdegaule.fr/KaraMeLise/choixcouleur.php qui vous donnera un zip avec un fichier KML par d&#233;partement fran&#231;ais. C&#039;est approximatif[[Par exemple la Charente Maritime n&#039;a pas l&#039;&#238;le de R&#233; et l&#039;&#238;le d&#039;Ol&#233;ron]] mais c&#039;est mieux que rien. Il doit certainement y avoir d&#039;autres sources pour ce genre de KML quelque part. Et n&#039;h&#233;sitez pas &#224; poster vos sources dans les commentaires de l&#039;article ! Les KML r&#233;cup&#233;r&#233;s sont plac&#233;s quelque part dans un dossier de votre plugin ou du r&#233;pertoire squelettes. Pour ma part, c&#039;&#233;tait dans un r&#233;pertoire &#171;kml&#187; (original non ?) Ensuite il reste plus qu&#039;&#224; demander l&#039;appel de ces KML en m&#234;me temps que la carte. Voici comment j&#039;ai proc&#233;d&#233; pour afficher les points des articles d&#039;une rubrique : &lt;cadre class=&#039;spip&#039;&gt; [(#INCLURE{fond=modeles/carte_gis, objets=articles, id_rubrique=#ID_RUBRIQUE, zoom=#CONFIG{gis/zoom}, lat=#CONFIG{gis/lat}, lon=#CONFIG{gis/lon}, controle_type=non, kml=[(#LISTE{ [(#CHEMIN{kml/16.kml}|timestamp|url_absolue)], [(#CHEMIN{kml/17.kml}|timestamp|url_absolue)], [(#CHEMIN{kml/86.kml}|timestamp|url_absolue)], [(#CHEMIN{kml/79.kml}|timestamp|url_absolue)]})]})] &lt;/cadre&gt; Par rapport &#224; une utilisation habituelle de GIS, ce qui change est la pr&#233;sence de l&#039;option &lt;code&gt;kml&lt;/code&gt;. Cette option accepte une ou plusieurs entr&#233;es et types d&#039;entr&#233;es : -* un unique &#233;l&#233;ment ou un tableau comme ici, cr&#233;&#233; avec #LISTE -* pour chaque &#233;l&#233;ment, un identifiant ou une url absolue. -** Un identifiant correspond &#224; un num&#233;ro de document (id_document), document qui est alors un fichier KML donc, sinon &#231;a n&#039;a pas d&#039;int&#233;r&#234;t ! -** Un fichier en url absolue, comme l&#039;exemple, pointe sur un kml. On remarque ici la pr&#233;sence du filtre &lt;code&gt;|timestamp&lt;/code&gt;, qui permet de donner un identifiant &#224; l&#039;URL en fonction de la date de mise &#224; jour du fichier sur le serveur, parce que sinon, Google (ou les autres API de carte) met en cache votre fichier (1 cache pour 1 URL) et en phase de test c&#039;est tr&#232;s ennuyant car changer le fichier kml sans changer son nom ne modifie alors pas la carte g&#233;n&#233;r&#233;e... pas pratique. Donc, en r&#233;sum&#233;, vive &lt;code&gt;|timestamp&lt;/code&gt; ! {{{Notes sur GIS 2, SPIP 2.1 et les KML}}} GIS 2 pour SPIP 2.1 acc&#232;pte aussi des kml, avec la limitation de ne pouvoir en mettre qu&#039;un seul, c&#039;est &#224; dire que l&#039;option kml n&#039;accepte pas d&#039;entr&#233;e tableau (du moins &#224; l&#039;heure o&#249; j&#039;&#233;cris). Par ailleurs pour &lt;code&gt;#LISTE&lt;/code&gt; en SPIP 2.1, utilisez le plugin &#171;It&#233;rateurs&#187;, sinon utilisez &lt;code&gt;#ARRAY&lt;/code&gt;, mais la question ne se pose pas trop pour GIS 2, puisqu&#039;il ne prend pas de tableau :) Voil&#224;, je crois que tout est dit ! Bonne utilisation de KML avec GIS :)&lt;/div&gt;&lt;!--.rss_texte--&gt;
		&lt;div class='raw_ps'&gt;Pour ceux qui cherchent les ic&#244;nes de marqueurs, elles ont &#233;t&#233; prises ici : http://mapicons.nicolasmollet.com/ , une vraie mine pour l&#039;iconographie de cartographie. &lt;/div&gt;&lt;!--.rss_ps--&gt;

		</content:encoded>
]

		

	</item>



	<item>
		<title>Boucles avec des conditions en OR (et explication des crit&#232;res)</title>
		<link>http://www.spip-contrib.net/Boucles-avec-des-conditions-en-OR-et-explication-des</link>
		<guid isPermaLink="true">http://www.spip-contrib.net/Boucles-avec-des-conditions-en-OR-et-explication-des</guid>
		<dc:date>2012-01-16T15:38:56Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Matthieu Marcillaud</dc:creator>

<category domain="http://www.spip-contrib.net/Tutoriaux-pour-squelettes">Tutoriaux pour squelettes</category>


		<description>
&lt;p&gt;Comme vous le savez il n'est pas possible dans l'&#233;criture des crit&#232;res de boucle d'indiquer une condition OR, autrement appel&#233; &#171; OU logique &#187;, autrement dit d'indiquer : &#171; trouve les &#233;l&#233;ments avec &#231;a OU avec &#231;a. &#187; La seule possibilit&#233; est de cr&#233;er un crit&#232;re sp&#233;cifique. C'est ce que nous allons voir ici pour un cas assez simple. Quelqu'un est venu hier soir sur l'IRC de SPIP pour demander s'il &#233;tait possible d'&#233;crire une boucle br&#232;ves qui cherche (BREVES) titre LIKE %#TITRE% OU texte LIKE %#TITRE%, le #TITRE (...)&lt;/p&gt;



-
&lt;a href="http://www.spip-contrib.net/Tutoriaux-pour-squelettes" rel="directory"&gt;Tutoriaux pour squelettes&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Comme vous le savez il n'est pas possible dans l'&#233;criture des crit&#232;res de boucle d'indiquer une condition OR, autrement appel&#233; &#171; OU logique &#187;, autrement dit d'indiquer : &#171; trouve les &#233;l&#233;ments avec &#231;a OU avec &#231;a. &#187;&lt;/p&gt; &lt;p&gt;La seule possibilit&#233;&lt;span class=&quot;spip_note_ref&quot;&gt; [&lt;a href=&#039;#nb6-1&#039; class=&#039;spip_note&#039; rel=&#039;footnote&#039; title=&#039;hormis une sorte de contournement sur plusieurs boucles avec le (...)&#039; id=&#039;nh6-1&#039;&gt;1&lt;/a&gt;]&lt;/span&gt; est de cr&#233;er un crit&#232;re sp&#233;cifique. C'est ce que nous allons voir ici pour un cas assez simple.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Quelqu'un est venu hier soir sur l'IRC de SPIP pour demander s'il &#233;tait possible d'&#233;crire une boucle br&#232;ves qui cherche &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;(BREVES) {titre LIKE %#TITRE%} OU {texte LIKE %#TITRE%}&lt;/code&gt;, le #TITRE &#233;tant pris dans une boucle parente (une boucle ARTICLES il me semble, mais cela a peu d'importance...)&lt;/p&gt; &lt;p&gt;Une solution &#224; ce probl&#232;me est de cr&#233;er son propre crit&#232;re, puisque SPIP fait syst&#233;matiquement des ET entre ses crit&#232;res (ils sont cumulatifs).&lt;/p&gt; &lt;p&gt;J'annonce tout de suite que cr&#233;er un crit&#232;re peut &#234;tre simple, mais peut aussi &#234;tre tr&#232;s compliqu&#233; ! Par chance la demande ici est simple, et c'est pourquoi elle offre une jolie base pour un exemple.&lt;/p&gt; &lt;p&gt;Nous allons donc imaginer un crit&#232;re nomm&#233; &#171; va_chercher &#187; qui prendra un argument. Son utilisation sera : &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;{va_chercher toto}&lt;/code&gt; ou encore &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;{va_chercher #TITRE}&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Comme toute nouvelle d&#233;finition (balise, filtre, crit&#232;re, boucle), on mettra le code de notre crit&#232;re dans un fichier de fonctions, par exemple dans &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;squelettes/mes_fonctions.php&lt;/code&gt;.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;D&#233;claration de base du crit&#232;re&lt;/h3&gt;
&lt;p&gt;Voici une d&#233;claration de la fonction PHP de notre crit&#232;re. Ici il n'y a que la d&#233;claration et aucune action encore.&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_php cadre spip_cadre&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; critere_va_chercher_dist&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$idb&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$idb&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/7259538720eda80106f56d0073d65a1a.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Un crit&#232;re arrive avec trois arguments :&lt;/p&gt;
&lt;ul class=&quot;spip&quot;&gt;&lt;li&gt; &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;$idb&lt;/code&gt; est le nom de la boucle&lt;/li&gt;&lt;li&gt; &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&amp;$boucles&lt;/code&gt; est l'arbre de construction de toutes les boucles du squelette en question. &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;$boucle&lt;/code&gt;, calcul&#233; ensuite, est celui de la boucle que le crit&#232;re va modifier directement. Le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&amp;&lt;/code&gt; est important, il signifie en PHP que la variable est pass&#233;e &#171; par r&#233;f&#233;rence &#187;, autrement dit que toute modification de cette variable &#224; l'int&#233;rieur de la fonction du crit&#232;re affecte la variable &#224; l'ext&#233;rieur de l'appel. On peut aussi dire que le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&amp;&lt;/code&gt; permet de ne pas avoir une &lt;i&gt;copie&lt;/i&gt; du contenu de la variable demand&#233;e, mais le contenu &lt;i&gt;lui-m&#234;me&lt;/i&gt;.&lt;/li&gt;&lt;li&gt; &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;$crit&lt;/code&gt; est l'arbre de construction du crit&#232;re, il permet de savoir ce que contient le crit&#232;re en question (nom, op&#233;rateur, n&#233;gation, arguments...)&lt;/li&gt;&lt;/ul&gt;&lt;h3 class=&quot;h3 spip&quot;&gt;Effectuer une action&lt;/h3&gt;
&lt;p&gt;Nous allons voir comment ajouter un crit&#232;re de s&#233;lection dans la boucle gr&#226;ce &#224; ce crit&#232;re. Nous allons ajouter un &#233;l&#233;ment dans le tableau &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;$boucle-&gt;where&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Notons d&#233;j&#224;, que tous les &#233;l&#233;ments dans ce tableau &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;where&lt;/code&gt; sont encha&#238;n&#233;s par des op&#233;rateurs &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;AND&lt;/code&gt;. Cependant, et c'est ce que nous verrons plus loin, un &#233;l&#233;ment de ce tableau peut contenir des sous-&#233;l&#233;ments, et pour ceux-l&#224;, nous pouvons d&#233;crire pr&#233;cis&#233;ment le type de liaison qui les affecte parmi une panoplie d'op&#233;rateurs &#224; disposition (AND, OR, NOT, LIKE, REGEXP, &gt;, &lt;, =, &gt;=, &lt;= et je dois en oublier)&lt;/p&gt; &lt;p&gt;Commen&#231;ons simplement. D'une part, le &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;$table&lt;/code&gt; calcul&#233; contient le nom de la table SQL concernant notre boucle. Le tableau &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;$c&lt;/code&gt; contient trois &#233;l&#233;ments : Op&#233;rateur, Valeur1, Valeur2. Cela sera traduit ensuite par &#171; Valeur1 Operateur Valeur2 &#187; soit ici : &#171; titre = '' &#187;. En fonction des op&#233;rateurs, il n'y a pas obligatoirement trois &#233;l&#233;ments dans le tableau ; ainsi &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;NOT&lt;/code&gt; ne compare qu'&#224; une valeur. &#192; la fin, le tableau &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;$c&lt;/code&gt; est ajout&#233; &#224; &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;where&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_php cadre spip_cadre&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; critere_va_chercher_dist&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$idb&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$idb&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$table&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;id_table&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;=&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;&lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$table&lt;/span&gt;.titre&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/a5be4e3c7573f376f6e2ec4e78ff8e0e.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Comme vous le voyez, le contenu du tableau &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;$c&lt;/code&gt; poss&#232;de une dr&#244;le d'&#233;criture &#224; base de doubles guillemets tel que &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;&quot;&#039;=&#039;&quot;&lt;/code&gt;. Il faut comprendre, qu'on est &#224; un niveau d'abstraction un peu au dessus de celui des squelettes. On fait &#233;crire, dans le crit&#232;re, le code PHP que SPIP produira pour calculer la boucle.&lt;/p&gt; &lt;p&gt;On comprendra donc que ces deux lignes ne donnent pas le m&#234;me r&#233;sultat&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_php cadre spip_cadre&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;=&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;&lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$table&lt;/span&gt;.titre&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;sql_quote(&#039;toto&#039;)&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;=&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;&lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$table&lt;/span&gt;.titre&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;sql_quote(\&#039;toto\&#039;)&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/0a0f763837acf5167fb0f5a4a9fbec9c.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Cela &#233;crira en PHP &#224; peu pr&#232;s :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_php cadre spip_cadre&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;spip_articles.titre&#039;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;=&#039;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt; sql_quote&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;toto&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;spip_articles.titre&#039;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;=&#039;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;sql_quote(\&#039;toto\&#039;)&#039;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/c613d88b75ed5c97d53ac3b20d571c81.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Puis &#224; l'execution, la r&#232;quete SQL :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_php cadre spip_cadre&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;spip_articles&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;titre&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;toto&#039;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;spip_articles&lt;span style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;titre&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;sql_quote&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;toto&#039;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/09d3ee11521cff5145f342321264c71b.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;La deuxi&#232;me ligne cr&#233;erait une erreur MySQL puisque &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;sql_quote(&#039;toto&#039;)&lt;/code&gt; est une fonction PHP pour SPIP et non une fonction d'un gestionnaire de requ&#234;te SQL.&lt;/p&gt; &lt;p&gt;Cependant la seconde &#233;criture peut &#234;tre souhait&#233;e si on veut utiliser une &lt;i&gt;fonction SQL&lt;/i&gt;, tel que &quot;MIN&quot; ou &quot;MAX&quot;, ou je ne sais quoi... Il faut donc bien comprendre ce qui se passe et ce que l'on souhaite obtenir :)&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;Ajouter la n&#233;gation&lt;/h3&gt;
&lt;p&gt;La n&#233;gation, c'est la pr&#233;sence dans le crit&#232;re de NOT, repr&#233;sent&#233; par le point d'exclamation (!) comme dans : &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;{!va_chercher toto}&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;Prendre en compte la n&#233;gation consiste &#8212;en g&#233;n&#233;ral&lt;span class=&quot;spip_note_ref&quot;&gt; [&lt;a href=&#039;#nb6-2&#039; class=&#039;spip_note&#039; rel=&#039;footnote&#039; title=&#039;Ce n'est pas syst&#233;matiquement vrai, notamment pour des crit&#232;res (...)&#039; id=&#039;nh6-2&#039;&gt;2&lt;/a&gt;]&lt;/span&gt;&#8212; &#224; demander l'inverse du r&#233;sultat attendu, c'est &#224; dire &#224; encapsuler tout notre tableau &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;$c&lt;/code&gt; dans un &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;NOT&lt;/code&gt; avant de le donner &#224; manger au &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;where&lt;/code&gt;. Pour savoir si notre crit&#232;re a une n&#233;gation, on interroge &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;$crit-&gt;not&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_php cadre spip_cadre&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; critere_va_chercher_dist&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$idb&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$idb&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$table&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;id_table&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;=&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;&lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$table&lt;/span&gt;.titre&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// Inversion de la condition ?&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;NOT&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/f769635972a8bffdbde26b6d7bf76b58.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Comme vous le voyez, &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;$c&lt;/code&gt;, lorsqu'il y a une condition &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;NOT&lt;/code&gt; devient un tableau d'une profondeur plus importante. C'est gr&#226;ce &#224; ce principe que nous pourrons faire un OU logique plus loin.&lt;/p&gt;
&lt;h3 class=&quot;h3 spip&quot;&gt;R&#233;cup&#233;rer un param&#232;tre de crit&#232;re&lt;/h3&gt;
&lt;p&gt;Nous allons rechercher le param&#232;tre 'toto' ou '#TITRE' pass&#233; &#224; notre crit&#232;re via &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;{va_chercher toto}&lt;/code&gt; ou &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;{va_chercher #TITRE}&lt;/code&gt;. Pour cela, nous allons tester la pr&#233;sence de &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;$crit-&gt;param[ n ]&lt;/code&gt; ou le nombre indique la pr&#233;sence du param&#232;tre n (en comptant de 0), et utiliser la fonction adapt&#233;e &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;calculer_liste&lt;/code&gt;.&lt;/p&gt; &lt;p&gt;S'il n'y a pas de param&#232;tre 0, nous pourrions mettre une valeur par d&#233;faut, mais nous dirons ici que c'est une erreur de squelettes pour forcer &#224; avoir ce param&#232;tre dans le crit&#232;re. On aurait pu, aussi, en absence de param&#232;tre r&#233;cup&#233;rer automatiquement un param&#232;tre de l'environnement ou le #TITRE de la boucle parente, mais cela n'entre pas dans l'objet de ce tutoriel. Sachez simplement que c'est possible, tout comme r&#233;aliser des jointures ou faire des calculs complexes. Vous pouvez en exemple regarder les crit&#232;res de certains plugins (agenda, organiseur, tradsync, ... ) et de SPIP (ecrire/public/criteres.php)&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_php cadre spip_cadre&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; critere_va_chercher_dist&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$idb&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$idb&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$table&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;id_table&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// chercher quoi ?&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/isset&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$quoi&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; calculer_liste&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$idb&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;id_parent&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# $quoi = &quot;&#039;&#039;&quot;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// rendons obligatoire ce parametre&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;zbug_critere_necessite_parametre&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;critere&#039;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&gt;&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;op&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;=&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;&lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$table&lt;/span&gt;.titre&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$quoi&lt;/span&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// Inversion de la condition ?&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;NOT&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/0d54267f60012742d90d0534aae49902.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 class=&quot;h3 spip&quot;&gt; Ajouter la condition OR &lt;/h3&gt;
&lt;p&gt;Le dernier &#233;l&#233;ment, le plus simple finalement maintenant que tout est compris, est d'ajouter l'op&#233;rateur OR entre deux s&#233;lections. Nous l'obtenons avec :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_php cadre spip_cadre&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;OR&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;LIKE&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;&lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$table&lt;/span&gt;.titre&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;sql_quote(&#039;%&#039; . &lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$quoi&lt;/span&gt; . &#039;%&#039;)&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;LIKE&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;&lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$table&lt;/span&gt;.texte&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;sql_quote(&#039;%&#039; . &lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$quoi&lt;/span&gt; . &#039;%&#039;)&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/fc44e4f8dc0af3d5d14a31039c89739f.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Je n'en dis pas plus. Voici le code complet :&lt;/p&gt;
&lt;div class=&quot;coloration_code&quot;&gt;&lt;div class=&quot;spip_php cadre spip_cadre&quot;&gt;&lt;div class=&quot;php&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// {va_chercher #TITRE}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; critere_va_chercher_dist&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$idb&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$idb&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$table&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;id_table&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$not&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// chercher quoi ?&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/isset&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$quoi&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; calculer_liste&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucles&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$idb&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;id_parent&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// rendons obligatoire ce parametre&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;zbug_critere_necessite_parametre&#039;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&#039;critere&#039;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&gt;&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;op&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;OR&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;LIKE&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;&lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$table&lt;/span&gt;.titre&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;sql_quote(&#039;%&#039; . &lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$quoi&lt;/span&gt; . &#039;%&#039;)&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;LIKE&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;&lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$table&lt;/span&gt;.texte&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;sql_quote(&#039;%&#039; . &lt;span style=&quot;color: #006699; font-weight: bold;&quot;&gt;$quoi&lt;/span&gt; . &#039;%&#039;)&quot;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;// Inversion de la condition ?&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$crit&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&quot;&#039;NOT&#039;&quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$boucle&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000088;&quot;&gt;$c&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&quot;font-weight: normal; vertical-align:top;&quot;&gt;&lt;div style=&quot;&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#039;cadre_download&#039; style=&#039;text-align: right;&#039;&gt; &lt;a href=&#039;http://www.spip-contrib.net/local/cache-code/f64db40bc0a756cdb2a9ab87e2953021.txt&#039; style=&#039;font-family: verdana, arial, sans; font-weight: bold; font-style: normal;&#039;&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#039;nb6-1&#039;&gt;
&lt;p&gt;&lt;span class=&quot;spip_note_ref&quot;&gt;[&lt;a href=&#039;#nh6-1&#039; class=&#039;spip_note&#039; title=&#039;Notes 6-1&#039; rev=&#039;footnote&#039;&gt;1&lt;/a&gt;] &lt;/span&gt;hormis une sorte de contournement sur plusieurs boucles avec le crit&#232;re &lt;code class=&#039;spip_code&#039; dir=&#039;ltr&#039;&gt;{doublons}&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#039;nb6-2&#039;&gt;
&lt;p&gt;&lt;span class=&quot;spip_note_ref&quot;&gt;[&lt;a href=&#039;#nh6-2&#039; class=&#039;spip_note&#039; title=&#039;Notes 6-2&#039; rev=&#039;footnote&#039;&gt;2&lt;/a&gt;] &lt;/span&gt;Ce n'est pas syst&#233;matiquement vrai, notamment pour des crit&#232;res complexes&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
&lt;div class='raw_chapo'&gt;Comme vous le savez il n&#039;est pas possible dans l&#039;&#233;criture des crit&#232;res de boucle d&#039;indiquer une condition OR, autrement appel&#233; &#171;OU logique&#187;, autrement dit d&#039;indiquer : &#171;trouve les &#233;l&#233;ments avec &#231;a OU&#160;avec &#231;a.&#187; La seule possibilit&#233; [[hormis une sorte de contournement sur plusieurs boucles avec le crit&#232;re &lt;code&gt;{doublons}&lt;/code&gt;]] est de cr&#233;er un crit&#232;re sp&#233;cifique. C&#039;est ce que nous allons voir ici pour un cas assez simple.&lt;/div&gt;&lt;!--.rss_chapo--&gt;
		&lt;div class='raw_texte'&gt;Quelqu&#039;un est venu hier soir sur l&#039;IRC de SPIP pour demander s&#039;il &#233;tait possible d&#039;&#233;crire une boucle br&#232;ves qui cherche &lt;code&gt;(BREVES) {titre LIKE %#TITRE%} OU {texte LIKE %#TITRE%}&lt;/code&gt;, le #TITRE &#233;tant pris dans une boucle parente (une boucle ARTICLES il me semble, mais cela a peu d&#039;importance...) Une solution &#224; ce probl&#232;me est de cr&#233;er son propre crit&#232;re, puisque SPIP fait syst&#233;matiquement des ET entre ses crit&#232;res (ils sont cumulatifs). J&#039;annonce tout de suite que cr&#233;er un crit&#232;re peut &#234;tre simple, mais peut aussi &#234;tre tr&#232;s compliqu&#233; ! Par chance la demande ici est simple, et c&#039;est pourquoi elle offre une jolie base pour un exemple. Nous allons donc imaginer un crit&#232;re nomm&#233; &#171;va_chercher&#187; qui prendra un argument. Son utilisation sera : &lt;code&gt;{va_chercher toto}&lt;/code&gt; ou encore &lt;code&gt;{va_chercher #TITRE}&lt;/code&gt; Comme toute nouvelle d&#233;finition (balise, filtre, crit&#232;re, boucle), on mettra le code de notre crit&#232;re dans un fichier de fonctions, par exemple dans &lt;code&gt;squelettes/mes_fonctions.php&lt;/code&gt;. {{{D&#233;claration de base du crit&#232;re}}} Voici une d&#233;claration de la fonction PHP de notre crit&#232;re. Ici il n&#039;y a que la d&#233;claration et aucune action encore. &lt;cadre class=&#039;php&#039;&gt; function critere_va_chercher_dist($idb, &amp;$boucles, $crit) { $boucle = &amp;$boucles[$idb]; } &lt;/cadre&gt; Un crit&#232;re arrive avec trois arguments : -* &lt;code&gt;$idb&lt;/code&gt; est le nom de la boucle -* &lt;code&gt;&amp;$boucles&lt;/code&gt; est l&#039;arbre de construction de toutes les boucles du squelette en question. &lt;code&gt;$boucle&lt;/code&gt;, calcul&#233; ensuite, est celui de la boucle que le crit&#232;re va modifier directement. Le &lt;code&gt;&amp;&lt;/code&gt; est important, il signifie en PHP que la variable est pass&#233;e &#171;par r&#233;f&#233;rence&#187;, autrement dit que toute modification de cette variable &#224; l&#039;int&#233;rieur de la fonction du crit&#232;re affecte la variable &#224; l&#039;ext&#233;rieur de l&#039;appel. On peut aussi dire que le &lt;code&gt;&amp;&lt;/code&gt; permet de ne pas avoir une {copie} du contenu de la variable demand&#233;e, mais le contenu {lui-m&#234;me}. -* &lt;code&gt;$crit&lt;/code&gt; est l&#039;arbre de construction du crit&#232;re, il permet de savoir ce que contient le crit&#232;re en question (nom, op&#233;rateur, n&#233;gation, arguments...) {{{Effectuer une action}}} Nous allons voir comment ajouter un crit&#232;re de s&#233;lection dans la boucle gr&#226;ce &#224; ce crit&#232;re. Nous allons ajouter un &#233;l&#233;ment dans le tableau &lt;code&gt;$boucle-&gt;where&lt;/code&gt;. Notons d&#233;j&#224;, que tous les &#233;l&#233;ments dans ce tableau &lt;code&gt;where&lt;/code&gt; sont encha&#238;n&#233;s par des op&#233;rateurs &lt;code&gt;AND&lt;/code&gt;. Cependant, et c&#039;est ce que nous verrons plus loin, un &#233;l&#233;ment de ce tableau peut contenir des sous-&#233;l&#233;ments, et pour ceux-l&#224;, nous pouvons d&#233;crire pr&#233;cis&#233;ment le type de liaison qui les affecte parmi une panoplie d&#039;op&#233;rateurs &#224; disposition (AND, OR, NOT, LIKE, REGEXP, &gt;, &lt;, =, &gt;=, &lt;= et je dois en oublier) Commen&#231;ons simplement. D&#039;une part, le &lt;code&gt;$table&lt;/code&gt; calcul&#233; contient le nom de la table SQL concernant notre boucle. Le tableau &lt;code&gt;$c&lt;/code&gt; contient trois &#233;l&#233;ments : Op&#233;rateur, Valeur1, Valeur2. Cela sera traduit ensuite par &#171;Valeur1 Operateur Valeur2&#187; soit ici : &#171;titre = &#039;&#039;&#187;. En fonction des op&#233;rateurs, il n&#039;y a pas obligatoirement trois &#233;l&#233;ments dans le tableau ; ainsi &lt;code&gt;NOT&lt;/code&gt; ne compare qu&#039;&#224; une valeur. &#192; la fin, le tableau &lt;code&gt;$c&lt;/code&gt; est ajout&#233; &#224; &lt;code&gt;where&lt;/code&gt;. &lt;cadre class=&#039;php&#039;&gt; function critere_va_chercher_dist($idb, &amp;$boucles, $crit) { $boucle = &amp;$boucles[$idb]; $table = $boucle-&gt;id_table; $c = array(&quot;&#039;=&#039;&quot;, &quot;&#039;$table.titre&#039;&quot;, &quot;&#039;&#039;&quot;); $boucle-&gt;where[] = $c; } &lt;/cadre&gt; Comme vous le voyez, le contenu du tableau &lt;code&gt;$c&lt;/code&gt; poss&#232;de une dr&#244;le d&#039;&#233;criture &#224; base de doubles guillemets tel que &lt;code&gt;&quot;&#039;=&#039;&quot;&lt;/code&gt;. Il faut comprendre, qu&#039;on est &#224; un niveau d&#039;abstraction un peu au dessus de celui des squelettes. On fait &#233;crire, dans le crit&#232;re, le code PHP que SPIP produira pour calculer la boucle. On comprendra donc que ces deux lignes ne donnent pas le m&#234;me r&#233;sultat &lt;cadre class=&#039;php&#039;&gt; $c = array(&quot;&#039;=&#039;&quot;, &quot;&#039;$table.titre&#039;&quot;, &quot;sql_quote(&#039;toto&#039;)&quot;); $c = array(&quot;&#039;=&#039;&quot;, &quot;&#039;$table.titre&#039;&quot;, &quot;&#039;sql_quote(\&#039;toto\&#039;)&#039;&quot;); &lt;/cadre&gt; Cela &#233;crira en PHP &#224; peu pr&#232;s : &lt;cadre class=&#039;php&#039;&gt; &#039;spip_articles.titre&#039; . &#039;=&#039; . sql_quote(&#039;toto&#039;) &#039;spip_articles.titre&#039; . &#039;=&#039; . &#039;sql_quote(\&#039;toto\&#039;)&#039; &lt;/cadre&gt; Puis &#224; l&#039;execution, la r&#232;quete SQL : &lt;cadre class=&#039;php&#039;&gt; spip_articles.titre=&#039;toto&#039; spip_articles.titre=sql_quote(&#039;toto&#039;) &lt;/cadre&gt; La deuxi&#232;me ligne cr&#233;erait une erreur MySQL puisque &lt;code&gt;sql_quote(&#039;toto&#039;)&lt;/code&gt; est une fonction PHP pour SPIP et non une fonction d&#039;un gestionnaire de requ&#234;te SQL. Cependant la seconde &#233;criture peut &#234;tre souhait&#233;e si on veut utiliser une {fonction SQL}, tel que &quot;MIN&quot; ou &quot;MAX&quot;, ou je ne sais quoi... Il faut donc bien comprendre ce qui se passe et ce que l&#039;on souhaite obtenir :) {{{Ajouter la n&#233;gation}}} La n&#233;gation, c&#039;est la pr&#233;sence dans le crit&#232;re de NOT, repr&#233;sent&#233; par le point d&#039;exclamation (!) comme dans : &lt;code&gt;{!va_chercher toto}&lt;/code&gt;. Prendre en compte la n&#233;gation consiste --en g&#233;n&#233;ral [[Ce n&#039;est pas syst&#233;matiquement vrai, notamment pour des crit&#232;res complexes]]-- &#224; demander l&#039;inverse du r&#233;sultat attendu, c&#039;est &#224; dire &#224; encapsuler tout notre tableau &lt;code&gt;$c&lt;/code&gt; dans un &lt;code&gt;NOT&lt;/code&gt; avant de le donner &#224; manger au &lt;code&gt;where&lt;/code&gt;. Pour savoir si notre crit&#232;re a une n&#233;gation, on interroge &lt;code&gt;$crit-&gt;not&lt;/code&gt;. &lt;cadre class=&#039;php&#039;&gt; function critere_va_chercher_dist($idb, &amp;$boucles, $crit) { $boucle = &amp;$boucles[$idb]; $table = $boucle-&gt;id_table; $c = array(&quot;&#039;=&#039;&quot;, &quot;&#039;$table.titre&#039;&quot;, &quot;&#039;&#039;&quot;); // Inversion de la condition ? if ($crit-&gt;not) { $c = array(&quot;&#039;NOT&#039;&quot;, $c); } $boucle-&gt;where[] = $c; } &lt;/cadre&gt; Comme vous le voyez, &lt;code&gt;$c&lt;/code&gt;, lorsqu&#039;il y a une condition &lt;code&gt;NOT&lt;/code&gt; devient un tableau d&#039;une profondeur plus importante. C&#039;est gr&#226;ce &#224; ce principe que nous pourrons faire un OU logique plus loin. {{{R&#233;cup&#233;rer un param&#232;tre de crit&#232;re}}} Nous allons rechercher le param&#232;tre &#039;toto&#039; ou &#039;#TITRE&#039; pass&#233; &#224; notre crit&#232;re via &lt;code&gt;{va_chercher toto}&lt;/code&gt; ou &lt;code&gt;{va_chercher #TITRE}&lt;/code&gt;. Pour cela, nous allons tester la pr&#233;sence de &lt;code&gt;$crit-&gt;param[ n ]&lt;/code&gt; ou le nombre indique la pr&#233;sence du param&#232;tre n (en comptant de 0), et utiliser la fonction adapt&#233;e &lt;code&gt;calculer_liste&lt;/code&gt;. S&#039;il n&#039;y a pas de param&#232;tre 0, nous pourrions mettre une valeur par d&#233;faut, mais nous dirons ici que c&#039;est une erreur de squelettes pour forcer &#224; avoir ce param&#232;tre dans le crit&#232;re. On aurait pu, aussi, en absence de param&#232;tre r&#233;cup&#233;rer automatiquement un param&#232;tre de l&#039;environnement ou le #TITRE de la boucle parente, mais cela n&#039;entre pas dans l&#039;objet de ce tutoriel. Sachez simplement que c&#039;est possible, tout comme r&#233;aliser des jointures ou faire des calculs complexes. Vous pouvez en exemple regarder les crit&#232;res de certains plugins (agenda, organiseur, tradsync, ... ) et de SPIP (ecrire/public/criteres.php) &lt;cadre class=&#039;php&#039;&gt; function critere_va_chercher_dist($idb, &amp;$boucles, $crit) { $boucle = &amp;$boucles[$idb]; $table = $boucle-&gt;id_table; // chercher quoi ? if (isset($crit-&gt;param[0])) { $quoi = calculer_liste($crit-&gt;param[0], array(), $boucles, $boucles[$idb]-&gt;id_parent); } else { # $quoi = &quot;&#039;&#039;&quot;; // rendons obligatoire ce parametre return (array(&#039;zbug_critere_necessite_parametre&#039;, array(&#039;critere&#039; =&gt; $crit-&gt;op ))); } $c = array(&quot;&#039;=&#039;&quot;, &quot;&#039;$table.titre&#039;&quot;, &quot;$quoi&quot;); // Inversion de la condition ? if ($crit-&gt;not) { $c = array(&quot;&#039;NOT&#039;&quot;, $c); } $boucle-&gt;where[] = $c; } &lt;/cadre&gt; {{{ Ajouter la condition OR }}} Le dernier &#233;l&#233;ment, le plus simple finalement maintenant que tout est compris, est d&#039;ajouter l&#039;op&#233;rateur OR entre deux s&#233;lections. Nous l&#039;obtenons avec : &lt;cadre class=&#039;php&#039;&gt; $c = array(&quot;&#039;OR&#039;&quot;, array(&quot;&#039;LIKE&#039;&quot;, &quot;&#039;$table.titre&#039;&quot;, &quot;sql_quote(&#039;%&#039; . $quoi . &#039;%&#039;)&quot;), array(&quot;&#039;LIKE&#039;&quot;, &quot;&#039;$table.texte&#039;&quot;, &quot;sql_quote(&#039;%&#039; . $quoi . &#039;%&#039;)&quot;) ); &lt;/cadre&gt; Je n&#039;en dis pas plus. Voici le code complet : &lt;cadre class=&#039;php&#039;&gt; // {va_chercher #TITRE} function critere_va_chercher_dist($idb, &amp;$boucles, $crit) { $boucle = &amp;$boucles[$idb]; $table = $boucle-&gt;id_table; $not = $crit-&gt;not; // chercher quoi ? if (isset($crit-&gt;param[0])) { $quoi = calculer_liste($crit-&gt;param[0], array(), $boucles, $boucles[$idb]-&gt;id_parent); } else { // rendons obligatoire ce parametre return (array(&#039;zbug_critere_necessite_parametre&#039;, array(&#039;critere&#039; =&gt; $crit-&gt;op ))); } $c = array(&quot;&#039;OR&#039;&quot;, array(&quot;&#039;LIKE&#039;&quot;, &quot;&#039;$table.titre&#039;&quot;, &quot;sql_quote(&#039;%&#039; . $quoi . &#039;%&#039;)&quot;), array(&quot;&#039;LIKE&#039;&quot;, &quot;&#039;$table.texte&#039;&quot;, &quot;sql_quote(&#039;%&#039; . $quoi . &#039;%&#039;)&quot;) ); // Inversion de la condition ? if ($crit-&gt;not) { $c = array(&quot;&#039;NOT&#039;&quot;, $c); } $boucle-&gt;where[] = $c; } &lt;/cadre&gt; &lt;/div&gt;&lt;!--.rss_texte--&gt;
		

		</content:encoded>
]

		

	</item>



</channel>

</rss>


