<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Nicolas Giraud</title>
    <description>The latest articles on Forem by Nicolas Giraud (@arcanneero).</description>
    <link>https://forem.com/arcanneero</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1097786%2F9c02a472-e80c-4093-869c-d103da25ae71.jpeg</url>
      <title>Forem: Nicolas Giraud</title>
      <link>https://forem.com/arcanneero</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/arcanneero"/>
    <language>en</language>
    <item>
      <title>Doc as code, personnaliser vos rendus pour répondre à vos contraintes ou à votre esprit créatif !</title>
      <dc:creator>Nicolas Giraud</dc:creator>
      <pubDate>Tue, 21 May 2024 07:30:00 +0000</pubDate>
      <link>https://forem.com/onepoint/doc-as-code-personnaliser-vos-rendus-pour-repondre-a-vos-contraintes-ou-a-votre-esprit-creatif--52ef</link>
      <guid>https://forem.com/onepoint/doc-as-code-personnaliser-vos-rendus-pour-repondre-a-vos-contraintes-ou-a-votre-esprit-creatif--52ef</guid>
      <description>&lt;p&gt;&lt;strong&gt;Produire des documents avec les outils de &lt;em&gt;doc as code&lt;/em&gt; reste quelque chose d'accessible à quiconque travaillant avec un IDE.&lt;br&gt;
Toutefois, nos structures nous contraignent à utiliser des visuels pour produire ces documents, qu'ils soient internes ou externes.&lt;br&gt;
Palettes de couleurs, chartes graphiques, design systems, sont des exemples de contraintes à appliquer dans nos processus de partage d'informations.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Le &lt;a href="https://dev.to/onepoint/doc-as-code-un-parcours-initiatique-pour-publier--4799"&gt;parcours initiatique pour publier&lt;/a&gt;, vous a peut-être conduit jusqu'ici.&lt;br&gt;
Si la joie d'avoir publié vos premiers documents est bien là, la frustration qu'ils ressemblent à tous les autres n'est sûrement pas loin.&lt;/p&gt;

&lt;p&gt;Mais comment personnaliser vos styles pour que vos documents web ou traitement de texte ne ressemblent pas à tous les autres ?&lt;br&gt;
Je vous invite ici à découvrir quelles sont les possibilités de ces outils et d'identifier les points limitant pour votre créativité.&lt;br&gt;
Mais avant tout, je dois vous présenter les différentes façons de configurer le générateur Asciidoctor&lt;sup id="fnref1"&gt;1&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arcanneero.gitlab.io/publications/current/doc-as-code/docs-as-code-03-styles.html"&gt;Cette version&lt;/a&gt; de l'article a été publiée avec la chaîne de publication de l'écosystème Asciidoc&lt;sup id="fnref2"&gt;2&lt;/sup&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Configurer le générateur
&lt;/h2&gt;

&lt;p&gt;Produire et partager des documents reste relativement aisé.&lt;br&gt;
Pour autant, si vous avez besoin de les personnaliser, vous devrez vous armer de patience pour configurer vous outils de génération.&lt;br&gt;
Il existe un ensemble de propriétés permettant de surcharger les comportements par défaut du générateur Asciidoctor&lt;sup id="fnref1"&gt;1&lt;/sup&gt;, et ainsi appliquer vos propres styles.&lt;/p&gt;

&lt;p&gt;Par défaut, nous allons pouvoir utiliser des fichiers de configuration pour adapter le comportement du générateur pour un ensemble de documents.&lt;br&gt;
Des propriétés pourront aussi être définies directement dans chaque document pour surcharger les fichiers de configuration.&lt;br&gt;
Il sera également possible de passer des paramètres communs en les ajoutant à la commande de génération.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;L'ordre de priorité des paramètres est :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Les propriétés posées sur un document&lt;/li&gt;
&lt;li&gt;Les paramètres passés sur la commande de génération&lt;/li&gt;
&lt;li&gt;La configuration fichier&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;Une fois que vous aurez réussi à configurer votre générateur, la suite de votre aventure se passera dans des fichiers CSS&lt;sup id="fnref3"&gt;3&lt;/sup&gt;.&lt;br&gt;
En fonction de votre spectre de compétences, cette personnalisation vous sera plus ou moins accessible.&lt;br&gt;
Malheureusement, je ne pourrai pas vous montrer ici les méandres de ce langage et vous laisserai explorer ses possibilités.&lt;/p&gt;
&lt;h2&gt;
  
  
  Personnaliser une feuille de style
&lt;/h2&gt;

&lt;p&gt;Dans le &lt;a href="https://dev.to/onepoint/doc-as-code-petit-guide-illustre-pour-mieux-se-lancer-2m2k"&gt;petit guide illustré pour mieux se lancer&lt;/a&gt;, vous avez pu découvrir que les outils de &lt;em&gt;docs as code&lt;/em&gt; comme Asciidoctor&lt;sup id="fnref1"&gt;1&lt;/sup&gt; permettent de générer vos documents au format HTML&lt;sup id="fnref4"&gt;4&lt;/sup&gt;.&lt;br&gt;
Et comme tout bon HTML, il est possible de donner du style à nos écrits grâce à CSS&lt;sup id="fnref3"&gt;3&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Selon votre degré de maîtrise du CSS&lt;sup id="fnref3"&gt;3&lt;/sup&gt;, vous pourrez partir d'une feuille de style existante, ou en écrire de nouvelles en intégralité.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;L'écriture intégrale d'une feuille CSS impliquera une bonne maîtrise de la structure HTML générée.&lt;br&gt;
Vous devrez pour cela vous plonger dans Asciidoctor pour connaitre ce qu'il produit.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Je vous préconise de repartir d'un thème existant afin de minimiser l'effort de compréhension du HTML généré.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Une fois votre feuille écrite, ou modifiée, il faut maintenant l'appliquer à vos documents.&lt;/p&gt;

&lt;p&gt;Comme vu dans la section précédente, voici les trois méthodes possibles.&lt;/p&gt;

&lt;p&gt;.asciidoctorconfig:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:stylesdir: {asciidoctorconfigdir}/.asciidoctor &amp;lt;1&amp;gt;
:stylesheet: fundation-lime.css &amp;lt;2&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;La variable &lt;code&gt;aasciidoctorconfigdir&lt;/code&gt; correspond au répertoire où se trouve le fichier &lt;code&gt;.asciidoctorconfig&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Nom complet du fichier dans le répertoire.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv64vhgilu1w2sqh95tr4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv64vhgilu1w2sqh95tr4.png" alt="Exemple de configuration" width="707" height="141"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On pourra utiliser de la même façon ces propriétés directement dans les fichiers sources.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;En revanche, leur portée est au niveau fichier, et non générateur&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Les mêmes propriétés pourront également être passées dans la ligne de commande.&lt;/p&gt;

&lt;p&gt;command line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;asciidoctor &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="nv"&gt;stylesdir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;.asciidoctor &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="nv"&gt;stylesheet&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;fundation-lime.css docs-as-code-03-styles.adoc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Du style dans vos PDF
&lt;/h2&gt;

&lt;p&gt;Si vous souhaitez utiliser les fonctionnalités de génération PDF d'Asciidoctor&lt;sup id="fnref1"&gt;1&lt;/sup&gt;, la personnalisation des rendus sera quelque peu différente de nos habitudes de développement.&lt;br&gt;
La production de PDF se fait grâce au plugin asciidoctor-pdf&lt;sup id="fnref5"&gt;5&lt;/sup&gt;.&lt;br&gt;
Cet outil n'utilise pas CSS pour appliquer son style, mais un fichier de configuration YAML.&lt;/p&gt;

&lt;p&gt;.exemple de fichier de template&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;extends&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;base&lt;/span&gt;
&lt;span class="na"&gt;page&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;layout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;portrait&lt;/span&gt;
  &lt;span class="na"&gt;margin&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;0.75in&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;1in&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;0.75in&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;1in&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Letter&lt;/span&gt;
&lt;span class="na"&gt;base&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;font-color&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;#333333&lt;/span&gt;
  &lt;span class="na"&gt;font-family&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Times-Roman&lt;/span&gt;
  &lt;span class="na"&gt;font-size&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;12&lt;/span&gt;
  &lt;span class="na"&gt;line-height-length&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;17&lt;/span&gt;
  &lt;span class="na"&gt;line-height&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;$base-line-height-length / $base-font-size&lt;/span&gt;
&lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;removed&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;font-style&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;italic&lt;/span&gt;
    &lt;span class="na"&gt;text-decoration&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;line-through&lt;/span&gt;
    &lt;span class="na"&gt;text-decoration-color&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;#FF0000&lt;/span&gt;
&lt;span class="na"&gt;heading&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;font-color&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;#262626&lt;/span&gt;
  &lt;span class="na"&gt;font-size&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;17&lt;/span&gt;
  &lt;span class="na"&gt;font-style&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;bold&lt;/span&gt;
  &lt;span class="na"&gt;line-height&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.2&lt;/span&gt;
  &lt;span class="na"&gt;margin-bottom&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;
&lt;span class="na"&gt;link&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;font-color&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="c1"&gt;#002FA7&lt;/span&gt;
&lt;span class="na"&gt;list&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;indent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;$base-font-size * &lt;/span&gt;&lt;span class="m"&gt;1.5&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pour plus de détails sur ces fonctions de personnalisation, vous pouvez vous reporter à la &lt;a href="https://docs.asciidoctor.org/pdf-converter/latest/theme/create-theme/"&gt;documentation du plugin&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Comme pour le CSS, nous allons maintenant devoir appliquer cette configuration au générateur PDF.&lt;/p&gt;

&lt;p&gt;.asciidoctorconfig&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:pdf-themesdir: {asciidoctorconfigdir}/.asciidoctor &amp;lt;1&amp;gt;
:pdf-theme: pdf &amp;lt;2&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;la variable &lt;code&gt;aasciidoctorconfigdir&lt;/code&gt; correspond au répertoire où se trouve le fichier &lt;code&gt;.asciidoctorconfig&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Préfixe du fichier de configuration. Dans ce cas, le fichier s'appelle &lt;code&gt;pdf-theme.yml&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfok9zlcgrgchmu2rzp0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfok9zlcgrgchmu2rzp0.png" alt="Exemple de configuration" width="800" height="101"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On pourra utiliser de la même façon ces propriétés directement dans les fichiers sources.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;En revanche, leur portée est au niveau fichier, et non générateur&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Les mêmes propriétés pourront également être passées dans la ligne de commande.&lt;/p&gt;

&lt;p&gt;Ligne de commande&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;asciidoctor-pdf &lt;span class="nt"&gt;--theme&lt;/span&gt; pdf &lt;span class="nt"&gt;-a&lt;/span&gt; pdf-themesdir&lt;span class="o"&gt;=&lt;/span&gt;.asciidoctor docs-as-code-03-styles.adoc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;L'exécutable est bien ici &lt;code&gt;asciidoctor-pdf&lt;/code&gt; et non  &lt;code&gt;asciidoctor&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Libérer votre créativité
&lt;/h2&gt;

&lt;p&gt;Si la génération HTML offre de plus larges possibilités en matière de personnalisation de visuel, il semble intéressant de ne pas oublier les possibilités offertes par &lt;code&gt;asciidoctor-pdf&lt;/code&gt;&lt;sup id="fnref5"&gt;5&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;D'un côté, la configuration dans des formats paginés à destination de l'impression demande une maîtrise particulière des différents attributs offerts par les outils.&lt;br&gt;
Heureusement, leur documentation dense décrit les possibilités du plugin.&lt;br&gt;
Il sera nécessaire de la parcourir afin d'obtenir le rendu souhaité.&lt;/p&gt;

&lt;p&gt;De l'autre côté, l'écosystème HTML&lt;sup id="fnref4"&gt;4&lt;/sup&gt;/CSS&lt;sup id="fnref3"&gt;3&lt;/sup&gt; permet de revenir dans un monde qui nous est peut-être plus proche : celui du développement.&lt;br&gt;
Toutefois, les limites posées par la sémantique HTML proposée par &lt;code&gt;asciidoctor&lt;/code&gt; apportent des contraintes qui peuvent s'avérer limitantes.&lt;br&gt;
La prise de connaissance des subtilités de ces outils est chronophage, et vous risquez malgré tout de ne pas atteindre le résultat attendu.&lt;/p&gt;

&lt;p&gt;Comme je vous l'ai montré dans &lt;a href="https://dev.to/onepoint/doc-as-code-un-parcours-initiatique-pour-publier--4799"&gt;l'article précédent&lt;/a&gt;, il existe un outil d'agrégation de documentation appelé &lt;a href="https://docs.antora.org/antora/latest/"&gt;Antora&lt;/a&gt;.&lt;br&gt;
Cet outil, même s'il est basé sur Asciidoctor, utilise un moteur de templating plus complexe.&lt;/p&gt;

&lt;p&gt;Et si les compétences en HTML/CSS peuvent rapidement être le facteur limitant de nos générations basiques, il en existe d'autres si vous utilisez Antora.&lt;br&gt;
Mais ceci est une autre histoire...&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://asciidoctor.org/docs/"&gt;https://asciidoctor.org/docs/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;&lt;a href="https://asciidoc.org/"&gt;https://asciidoc.org/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;&lt;a href="https://www.w3schools.com/css/default.asp"&gt;https://www.w3schools.com/css/default.asp&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn4"&gt;
&lt;p&gt;&lt;a href="https://www.w3schools.com/html/default.asp"&gt;https://www.w3schools.com/html/default.asp&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn5"&gt;
&lt;p&gt;&lt;a href="https://docs.asciidoctor.org/pdf-converter/latest/"&gt;https://docs.asciidoctor.org/pdf-converter/latest/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>asciidoc</category>
      <category>documentation</category>
      <category>share</category>
      <category>publish</category>
    </item>
    <item>
      <title>Doc as code, un parcours initiatique pour publier !</title>
      <dc:creator>Nicolas Giraud</dc:creator>
      <pubDate>Tue, 13 Feb 2024 10:23:00 +0000</pubDate>
      <link>https://forem.com/onepoint/doc-as-code-un-parcours-initiatique-pour-publier--4799</link>
      <guid>https://forem.com/onepoint/doc-as-code-un-parcours-initiatique-pour-publier--4799</guid>
      <description>&lt;p&gt;&lt;strong&gt;Écrire des fichiers en &lt;em&gt;doc as code&lt;/em&gt; pour produire des notes ou des compte-rendus est relativement simple.&lt;br&gt;
Construire une documentation collaborative, partagée et versionnée, c'est une autre histoire.&lt;br&gt;
Et au-delà des considérations techniques, vos process de publication peuvent apporter une complexité supplémentaire...&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Vous avez probablement fait vos premiers pas en &lt;em&gt;doc as code&lt;/em&gt;. Non ?&lt;br&gt;
Repartez des bases avec ce &lt;a href="https://dev.to/onepoint/doc-as-code-petit-guide-illustre-pour-mieux-se-lancer-2m2k"&gt;petit guide illustré pour mieux se lancer&lt;/a&gt;, un article pour vous montrer comment produire un document manuellement.&lt;/p&gt;

&lt;p&gt;Ce n'est clairement pas suffisant dans un contexte de travail en équipe, et je vous propose de regarder cela d'un peu plus près.&lt;br&gt;
Après avoir parlé processus et fait un tour du côté d'Asciidoctor&lt;sup id="fnref1"&gt;1&lt;/sup&gt;, je vous emmène à la découverte  d'Antora&lt;sup id="fnref2"&gt;2&lt;/sup&gt;, l'outil qui m'a changé la vie !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arcanneero.gitlab.io/publications/current/doc-as-code/docs-as-code-02-publish.html"&gt;Cette version&lt;/a&gt; de l'article a été publiée avec la chaîne de publication de l'écosystème Asciidoc&lt;sup id="fnref3"&gt;3&lt;/sup&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Écrire en équipe, une collaboration saine et sereine.
&lt;/h2&gt;

&lt;p&gt;Vous avez appréhendé la production de fichier texte dans vos premiers documents, à l'image des fichiers source de vos applications.&lt;br&gt;
Au-delà de se concentrer sur le contenu, vous allez pouvoir reprendre les pratiques de développement en vigueur sur votre projet.&lt;/p&gt;

&lt;p&gt;Ainsi, en déversant vos documents dans un dépôt Git&lt;sup id="fnref4"&gt;4&lt;/sup&gt; vous pourrez profiter des fonctionnalités d'historisation et de relecture d'un tel outil.&lt;br&gt;
Se présente alors devant vous l'ère de la rédaction collaborative !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1m6191rsbkebpo2mzx48.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1m6191rsbkebpo2mzx48.png" alt="Représentation d'un historique collaboratif" width="800" height="615"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vous pouvez observer ci-dessus l'historique de la production des documents, d'abord dans un contexte solitaire, puis dans l'ajout collaboratif de deux documents A et B.&lt;/p&gt;

&lt;p&gt;B étant prêt en premier, il intègre la documentation avant A, dont la revue prend plus de temps.&lt;/p&gt;

&lt;p&gt;Si la représentation des contributions ici est simple, il met en avant la possibilité de définir un processus de revue et de publication à base de l'outillage standard de développement.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Je vous invite à prendre soin de cette phase de définition du processus.&lt;/p&gt;

&lt;p&gt;À priori simple, elle renferme des questions de gouvernance qui sont souvent primordiales à la bonne contribution de chacun.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Maintenant que vous avez le concept, passons aux techniques de publication !&lt;/p&gt;
&lt;h2&gt;
  
  
  Classer et hiérarchiser : comment générer toute une arborescence.
&lt;/h2&gt;

&lt;p&gt;Les documents se multipliant, vous avez sans aucun doute commencé à les découper, les classer et pourquoi pas les hiérarchiser.&lt;br&gt;
À ce stade, vous n'imaginez plus les générer un par un à la main !&lt;br&gt;
Et c'est une bonne chose...&lt;/p&gt;

&lt;p&gt;Asciidoctor&lt;sup id="fnref1"&gt;1&lt;/sup&gt; est le seul outil de génération dans l'écosystème Asciidoc.&lt;br&gt;
En tout cas, il est la base sur laquelle se reposent tous les outils que nous avons déjà vus et que nous verrons plus loin.&lt;br&gt;
Il est, par exemple, derrière le plugin chrome présenté dans &lt;a href="https://dev.to/onepoint/doc-as-code-petit-guide-illustre-pour-mieux-se-lancer-2m2k"&gt;l'article précédent&lt;/a&gt;&lt;br&gt;
Il permet de prendre une source et de la convertir dans un ou plusieurs formats de sortie.&lt;/p&gt;

&lt;p&gt;Précédemment, je vous ai parlé de partager vos sources à l'aide de Git&lt;sup id="fnref4"&gt;4&lt;/sup&gt;.&lt;br&gt;
Dans la continuité, voici comment avec Asciidoctor&lt;sup id="fnref1"&gt;1&lt;/sup&gt; et Gitlab&lt;sup id="fnref3"&gt;3&lt;/sup&gt;, plus précisément de ses deux fonctions &lt;em&gt;CI&lt;/em&gt;&lt;sup id="fnref5"&gt;5&lt;/sup&gt;  et &lt;em&gt;pages&lt;/em&gt;&lt;sup id="fnref6"&gt;6&lt;/sup&gt;, vous allez pouvoir en quelques lignes produire une documentation.&lt;/p&gt;

&lt;p&gt;Je vous propose de commencer par écrire un petit script pour générer vos documents.&lt;br&gt;
Pour cela, prenez un projet avec la structure suivante.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fodmglala86z15iaycy0p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fodmglala86z15iaycy0p.png" alt="Structure du projet" width="185" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pour générer les fichiers, vous pouvez passer une commande proche de celle-ci :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;asciidoctor &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nt"&gt;-R&lt;/span&gt; doc-as-code &lt;span class="se"&gt;\ &lt;/span&gt;           &lt;span class="c"&gt;#&amp;lt;1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;-D&lt;/span&gt; public &lt;span class="se"&gt;\ &lt;/span&gt;                &lt;span class="c"&gt;#&amp;lt;2&amp;gt;&lt;/span&gt;
    &lt;span class="s1"&gt;'doc-as-code/**/*.adoc'&lt;/span&gt;     &lt;span class="c"&gt;#&amp;lt;3&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Répertoire racine des sources asciidoc. Permet de conserver l'arborescence dans le répertoire cible.&lt;/li&gt;
&lt;li&gt;Répertoire de sortie des fichiers générés&lt;/li&gt;
&lt;li&gt;Expression régulière pour trouver les fichiers à générer&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Je vous invite à regarder les différentes options présentes dans la documentation de la CLI d'Asciidoctor&lt;sup id="fnref1"&gt;1&lt;/sup&gt; afin de générer un résultat correspondent à vos attentes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Une fois la commande prête, je vous propose de l'utiliser avec Gitlab-CI&lt;sup id="fnref5"&gt;5&lt;/sup&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;pages&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;stage&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;deploy&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;asciidoctor/docker-asciidoctor&lt;/span&gt;                            &lt;span class="c1"&gt;#&amp;lt;1&amp;gt;&lt;/span&gt;
  &lt;span class="na"&gt;script&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;asciidoctor -R doc-as-code -D public 'doc-as-code/**/*.adoc'&lt;/span&gt; &lt;span class="c1"&gt;#&amp;lt;2&amp;gt;&lt;/span&gt;
  &lt;span class="na"&gt;artifacts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;public&lt;/span&gt;                                                       &lt;span class="c1"&gt;#&amp;lt;3&amp;gt;&lt;/span&gt;
  &lt;span class="na"&gt;rules&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH&lt;/span&gt;                  &lt;span class="c1"&gt;#&amp;lt;4&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Se base sur l'image Docker de Asciidoctor&lt;/li&gt;
&lt;li&gt;La commande qui génère les fichiers statiques&lt;/li&gt;
&lt;li&gt;Permet de demander à Gitlab de conserver les fichiers générés et de les exposer avec sa fonction &lt;code&gt;pages&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Ne s'exécute que sur la branche principale (&lt;code&gt;main&lt;/code&gt; par défaut)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Il vous reste à configurer votre projet pour activer &lt;code&gt;Gitlab Pages&lt;/code&gt;, et vos documents seront partagés !&lt;br&gt;
Pour cela je vous invite à consulter la documentation de &lt;a href="https://docs.gitlab.com/ee/user/project/pages/introduction.html"&gt;Gitlab&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Passez à la vitesse supérieure : agréger et versionner plusieurs dépôts.
&lt;/h2&gt;

&lt;p&gt;À ce stade, votre équipe est en capacité de produire une documentation à partir d'un dépôt de source et de la mettre à disposition de ses lecteurs.&lt;br&gt;
Mais votre produit a plusieurs composants, répartis dans différents dépôts Git&lt;sup id="fnref4"&gt;4&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Et le nombre de solutions pour agréger vos contenus n'a de limite que votre imagination...&lt;br&gt;
Pour que votre créativité reste à sa place, je vais vous parler ici d'un produit en particulier : Antora&lt;sup id="fnref2"&gt;2&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;Cet outil, intégrant directement l'écosystème Asciidoc&lt;sup id="fnref7"&gt;7&lt;/sup&gt; va vous permettre de produire un site statique en assemblant les documentations de vos différents composants (alias dépôt Git&lt;sup id="fnref4"&gt;4&lt;/sup&gt;).&lt;/p&gt;

&lt;p&gt;Il vous faudra un dépôt qui contiendra un &lt;code&gt;playbook&lt;/code&gt; définissant le contenu du site à générer et une structure particulière dans vos dépôts.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Le playbook peut être contenu dans votre composant principal. Dans ce cas la séparation des responsabilités n'est pas pleinement respecté, mais peut simplifier votre agrégation&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Voici le &lt;code&gt;playbook&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;site&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Vos projets&lt;/span&gt;
  &lt;span class="na"&gt;start_page&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;votre-projet::index.adoc&lt;/span&gt;
&lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;sources&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://votre-gitlab.com/votre/groupe/votre-projet.git&lt;/span&gt;   &lt;span class="c1"&gt;#&amp;lt;1&amp;gt;&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;develop&lt;/span&gt;                                             &lt;span class="c1"&gt;#&amp;lt;2&amp;gt;&lt;/span&gt;
    &lt;span class="na"&gt;start_path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docs&lt;/span&gt;                                              &lt;span class="c1"&gt;#&amp;lt;3&amp;gt;&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://votre-gitlab.com/votre/groupe/votre-super-projet.git&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;2.0&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;1.0&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;                                          &lt;span class="c1"&gt;#&amp;lt;4&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;URL du dépôt git du composant.&lt;/li&gt;
&lt;li&gt;Noms des branches où trouver la doc à générer&lt;/li&gt;
&lt;li&gt;Chemin relatif de l'emplacement du fichier antora.yml&lt;/li&gt;
&lt;li&gt;Plusieurs branches =&amp;gt; plusieurs versions de la documentation.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Vous avez ici la possibilité d'indiquer à Antora de générer plusieurs versions de votre documentation pour un même composant.&lt;/p&gt;

&lt;p&gt;Cette fonctionnalité se repose sur des tags ou des branches positionnées dans vos dépôts.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Coté projet, vous devrez écrire un fichier de configuration et  à réorganiser vos fichiers&lt;sup id="fnref8"&gt;8&lt;/sup&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Antora ajoute une notion de module particulièrement pratique pour regrouper vos documents par catégorie.&lt;/p&gt;

&lt;p&gt;Cependant, je vous déconseille de l'utiliser au départ.&lt;br&gt;
Laisser vous le temps de vous familiariser avec l'organisation des sources dans Antora.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;votre-projet&lt;/span&gt;            &lt;span class="c1"&gt;#&amp;lt;1&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;current&lt;/span&gt;              &lt;span class="c1"&gt;#&amp;lt;2&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Votre projet&lt;/span&gt;           &lt;span class="c1"&gt;#&amp;lt;3&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;nav&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;modules/ROOT/nav-begin.adoc&lt;/span&gt; &lt;span class="c1"&gt;#&amp;lt;4&amp;gt;&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;modules/ROOT/nav-end.adoc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Clé du projet utilisée pour les liens&lt;/li&gt;
&lt;li&gt;Nom de la version qui sera générée (doit changer pour chaque branche générée.)&lt;/li&gt;
&lt;li&gt;Nom du projet&lt;/li&gt;
&lt;li&gt;Lien vers les fichiers de navigation utilisés pour la construction du menu&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Les fichiers de navigation doivent être écrits manuellement.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Alors, prêts à produire votre documentation ?
&lt;/h2&gt;

&lt;p&gt;Avec Asciidoctor&lt;sup id="fnref1"&gt;1&lt;/sup&gt; et Antora&lt;sup id="fnref2"&gt;2&lt;/sup&gt;, vous l'avez compris, nous n'avons fait que survoler deux outils d'un écosystème dense.&lt;/p&gt;

&lt;p&gt;La configuration et la mise en place de ces outils vous demanderont un peu d'effort et surtout la lecture de la documentation de chacun de ces outils.&lt;br&gt;
Il faut d'ailleurs noter la bonne qualité de ces documentations, ce qui est rassurant pour des outils censés vous aider à produire la vôtre !&lt;/p&gt;

&lt;p&gt;Quoi qu'il en soit, et pour faire une nouvelle fois un rappel à &lt;a href="https://dev.to/onepoint/doc-as-code-petit-guide-illustre-pour-mieux-se-lancer-2m2k"&gt;l'article précédent&lt;/a&gt; : Keep It Simple Stupid&lt;sup id="fnref9"&gt;9&lt;/sup&gt; !&lt;br&gt;
Cet adage reste essentiel, autant dans les processus mis en place, que dans les outils mis en œuvre.&lt;/p&gt;

&lt;p&gt;Cependant, la sobriété des rendus générés peut donner à vos documents un aspect côté impersonnel.&lt;br&gt;
Pour palier cela, moyennant un peu de code, vous pouvez personnaliser les designs de sortie, mais ceci est &lt;a href="https://dev.to/onepoint/doc-as-code-personnaliser-vos-rendus-pour-repondre-a-vos-contraintes-ou-a-votre-esprit-creatif--52ef"&gt;une autre histoire...&lt;/a&gt;&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://docs.asciidoctor.org/"&gt;https://docs.asciidoctor.org/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;&lt;a href="https://docs.antora.org/antora/latest/Antora"&gt;https://docs.antora.org/antora/latest/Antora&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;&lt;a href="https://asciidoc.org/"&gt;https://asciidoc.org/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn4"&gt;
&lt;p&gt;&lt;a href="https://git-scm.com/"&gt;https://git-scm.com/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn5"&gt;
&lt;p&gt;&lt;a href="https://about.gitlab.com/"&gt;https://about.gitlab.com/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn6"&gt;
&lt;p&gt;&lt;a href="https://docs.gitlab.com/ee/ci/"&gt;https://docs.gitlab.com/ee/ci/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn7"&gt;
&lt;p&gt;&lt;a href="https://fr.wikipedia.org/wiki/Principe_KISS"&gt;https://fr.wikipedia.org/wiki/Principe_KISS&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn8"&gt;
&lt;p&gt;&lt;a href="https://fr.wikipedia.org/wiki/Principe_KISS/user/project/pages/"&gt;https://fr.wikipedia.org/wiki/Principe_KISS/user/project/pages/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn9"&gt;
&lt;p&gt;&lt;a href="https://docs.gitlab.com/ee/user/project/pages/"&gt;https://docs.gitlab.com/ee/user/project/pages/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>asciidoc</category>
      <category>documentation</category>
      <category>antora</category>
      <category>asciidoctor</category>
    </item>
    <item>
      <title>Doc as code, petit guide illustré pour mieux se lancer</title>
      <dc:creator>Nicolas Giraud</dc:creator>
      <pubDate>Thu, 01 Feb 2024 10:23:00 +0000</pubDate>
      <link>https://forem.com/onepoint/doc-as-code-petit-guide-illustre-pour-mieux-se-lancer-2m2k</link>
      <guid>https://forem.com/onepoint/doc-as-code-petit-guide-illustre-pour-mieux-se-lancer-2m2k</guid>
      <description>&lt;p&gt;&lt;strong&gt;En tant que développeurs et développeuses, notre environnement de développement est notre outil principal.&lt;br&gt;
Vous avez sans doute, comme moi, rencontrez des difficultés dans la manipulation de documents de type bureautique.&lt;br&gt;
Ajouter des extraits de code, récupérer une commande formatée, sont de tristes expériences qui vont vous attirer vers la &lt;em&gt;doc as code&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Le premier principe qui va nous intéresser est de pouvoir nous concentrer sur le fond des documents à produire, et non sur leur forme.&lt;br&gt;
Évidemment cette dernière reste importante, et nous allons y revenir.&lt;br&gt;
Mais, rester focalisé sur le contenu, en apportant des indicateurs simples, est réellement confortable. Un confort qui s'illustre rapidement dans la mise en évidence de certaines idées, ou l'emphase de portions de texte particulières comme du code.&lt;/p&gt;

&lt;p&gt;En complément, si vous êtes habitués des outils du web, que ce soit des forums, des encyclopédies (type Wikipédia&lt;sup id="fnref1"&gt;1&lt;/sup&gt;), vous pratiquez déjà probablement ce type d’écriture à balisage faible. Il en existe d’autres, mais nous ne citerons ici que Markdown&lt;sup id="fnref2"&gt;2&lt;/sup&gt;, ou Asciidoc&lt;sup id="fnref3"&gt;3&lt;/sup&gt; qui sont utilisés dans de nombreux projets informatiques.&lt;/p&gt;

&lt;p&gt;De mon côté, je suis tombé dans Asciidoc&lt;sup id="fnref3"&gt;3&lt;/sup&gt;. Sans considérer que cette syntaxe soit meilleure, j’y trouve une plus grande cohérence et un balisage faible permettant de conserver la lisibilité du texte brut&lt;sup id="fnref4"&gt;4&lt;/sup&gt;. Les outils qui vont suivre sont issus de cet écosystème, même si des équivalents existent.&lt;/p&gt;

&lt;p&gt;Vous pourrez jauger de ces différences entre Markdown&lt;sup id="fnref2"&gt;2&lt;/sup&gt; et  Asciidoc&lt;sup id="fnref3"&gt;3&lt;/sup&gt; &lt;a href="https://arcanneero.gitlab.io/publications/current/doc-as-code/docs-as-code-01-start.html"&gt;dans cette version&lt;/a&gt;, de l'article au le format Asciidoc&lt;sup id="fnref3"&gt;3&lt;/sup&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Écrire : n'est-ce pas la base ?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Derrière nos outils parfois complexes, je vous invite à vous concentrer sur l'essentiel : écrire.&lt;br&gt;
Et croyez-moi, faire simple, est parfois compliqué !&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Malgré la nécessité d'écrire, le balisage léger de  Asciidoc&lt;sup id="fnref3"&gt;3&lt;/sup&gt; va apporter immédiatement de la structuration.&lt;br&gt;
Il vous sera alors possible, tout en restant focalisé sur ce que vous écrivez, d'organiser toutes vos idées  par chapitres, par listes, ou éventuellement par tableaux.&lt;br&gt;
Des &lt;code&gt;=&lt;/code&gt; pour les niveaux de titre, quelques &lt;code&gt;*&lt;/code&gt; ou &lt;code&gt;.&lt;/code&gt; pour gérer vos listes, et le tour est joué.&lt;/p&gt;

&lt;p&gt;Et tout comme votre code, vous pourrez découper vos productions en différents fichiers. Il sera ensuite aisé d'inclure tout ou partie de ces notes, toujours grâce aux syntaxes d'Asciidoc&lt;sup id="fnref3"&gt;3&lt;/sup&gt;, même si cette fois, elles sont moins légères.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Consultez la documentation Asciidoc&lt;sup id="fnref3"&gt;3&lt;/sup&gt; pour connaître les différentes possibilités de cette syntaxe.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sachez qu'il existe dans tous nos IDE des plugins pour permettre un rendu au fil de l'eau de ce que vous écrivez.&lt;br&gt;
Ce sera là votre premier outil et voici à quoi cela peut ressembler :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6b8cnv6gxc624tffis6o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6b8cnv6gxc624tffis6o.png" alt="Exemple de rendu dans un IDE" title="Exemple de rendu dans un IDE." width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Remarquez ici l'inclusion d'une image.&lt;br&gt;
Il peut s'agir d'une des premières difficultés.&lt;/p&gt;

&lt;p&gt;Si vous avez besoin d'insérer des illustrations, vous devrez les gérer en externe et les inclure à vos écrits.&lt;br&gt;
La manipulation de ces images, en positionnement, en taille, ou pour les amender ne sera pas possible facilement dans l'outil de &lt;em&gt;doc as code&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ces syntaxes n'évitent pas des travers habituels de notre métier.&lt;br&gt;
Rapidement, nous arrivons à produire des systèmes complexes difficiles à prendre en main.&lt;br&gt;
Il sera alors indispensable de se recentrer sur les basiques : écrire, organiser ses idées, rendre une mise en page simple, mais fluide.&lt;/p&gt;

&lt;p&gt;En un mot, comme dans notre code applicatif : Keep It Simple Stupid, KISS&lt;sup id="fnref5"&gt;5&lt;/sup&gt; pour les intimes !&lt;/p&gt;

&lt;h2&gt;
  
  
  Partager vos documents : comment aller à l'essentiel ?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ecrire, c'est bien, mais partager c'est encore mieux !&lt;br&gt;
À ce stade, je vous ai montré comment produire des documents simples et visualiser le rendu en direct. Découvrons ensemble quelques astuces pour collaborer et partager simplement vos réalisations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;L'outil collaboratif par excellence du monde du développement est sans aucun doute Git.&lt;br&gt;
Accompagné de ses gestionnaires de dépôt (Gitlab, Github, etc.), vous pourrez mettre en place des processus de relecture et de validation bien connus de vos équipes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Si toutefois ces pratiques ne vous sont pas familières, utilisez ces outils localement.&lt;br&gt;
Il vous faudra alors générer localement les documents pour pouvoir les partager.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Côté génération, un premier outil intéressant et dont tout le monde dispose, est votre navigateur.&lt;br&gt;
Ce dernier met à disposition des plugins qui vont vous permettre un premier rendu de vos écrits.&lt;br&gt;
Utilisez ensuite la fonction &lt;strong&gt;imprimer&lt;/strong&gt; de votre navigateur, et hop, vous avez un format PDF partageable.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pour des générations plus automatisées ou systématisées, il faudra mettre en place une chaine de publication.&lt;/p&gt;

&lt;p&gt;Vous rencontrerez alors votre seconde difficulté : la mise en place de ce type de chaine.&lt;br&gt;
C'est naturel lorsque vous généralisez ces pratiques sur une équipe ou plus !&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Si toutefois vous préférez un format orienté web, il existe des outils de conversion en HTML.&lt;br&gt;
Dans l'écosystème Asciidoc&lt;sup id="fnref3"&gt;3&lt;/sup&gt;, on peut citer Asciidoctor&lt;sup id="fnref6"&gt;6&lt;/sup&gt;, ou encore Antora&lt;sup id="fnref7"&gt;7&lt;/sup&gt;:.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;L'usage de ces produits nécessite l'utilisation de processus plus ou moins automatisé et d'une gestion des sources avancée.&lt;/p&gt;

&lt;p&gt;Coté design, ils sont souvent assez épurés. Ils permettent cependant une mise en forme simple et efficace.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Vous constatez que suivre notre mantra KISS&lt;sup id="fnref5"&gt;5&lt;/sup&gt; est plus difficile lorsqu'on parle de partage et de publication.&lt;/p&gt;

&lt;p&gt;Se limiter à son navigateur est possible.&lt;br&gt;
Mais si vous tombez amoureux de ces outils vous devrez rapidement passer à la vitesse supérieure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alors, quand est-ce que vous vous y mettez ?
&lt;/h2&gt;

&lt;p&gt;La simplicité est indispensable lorsque l'on débute en &lt;strong&gt;doc as code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;La fluidité de l'écriture &lt;strong&gt;au kilomètre&lt;/strong&gt; et la structuration de vos idées au fil de l'eau sont l'atout essentiel de ces pratiques.&lt;br&gt;
Par expérience, ils nous apportent un confort mental incroyable au moment de la rédaction en déversant le flots des idées dans des fichiers simples à relire.&lt;/p&gt;

&lt;p&gt;Mais l'appropriation des outils de &lt;strong&gt;doc as code&lt;/strong&gt; n'est pas toujours un long fleuve tranquille...&lt;br&gt;
Vous y lancer changera forcément votre approche des supports écrits, mais n'oubliez pas d'emprunter ce chemin étape par étape.&lt;br&gt;
Cela peut être, par exemple, en commençant par la prise de notes, puis la rédaction de document, pour aller jusqu'aux illustrations...&lt;/p&gt;

&lt;p&gt;Vous risquez cependant d'avoir besoin dès vos premières publications de personnaliser vos rendus.&lt;br&gt;
Charte à suivre ou simple envie d'esthétisme, vous aurez besoin de compétences et de temps.&lt;/p&gt;

&lt;p&gt;Mais ceci est une autre histoire...&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;&lt;a href="https://fr.wikipedia.org/wiki/Wikip%C3%A9dia"&gt;https://fr.wikipedia.org/wiki/Wikip%C3%A9dia&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;&lt;a href="https://www.markdownguide.org/"&gt;https://www.markdownguide.org/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;&lt;a href="https://asciidoc.org/"&gt;https://asciidoc.org/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn4"&gt;
&lt;p&gt;&lt;a href="https://arcanneero.gitlab.io/publications/current/doc-as-code/docs-as-code-01-start.html"&gt;https://arcanneero.gitlab.io/publications/current/doc-as-code/docs-as-code-01-start.html&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn5"&gt;
&lt;p&gt;&lt;a href="https://fr.wikipedia.org/wiki/Principe_KISS"&gt;https://fr.wikipedia.org/wiki/Principe_KISS&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn6"&gt;
&lt;p&gt;&lt;a href="https://asciidoctor.org/docs/"&gt;https://asciidoctor.org/docs/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn7"&gt;
&lt;p&gt;&lt;a href="https://docs.antora.org/antora/latest/"&gt;https://docs.antora.org/antora/latest/&lt;/a&gt; ↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>asciidoc</category>
      <category>documentation</category>
      <category>share</category>
      <category>write</category>
    </item>
  </channel>
</rss>
