#author John Wiegley et Michael Olson (traduction Jean Magnan de Bornier) #title Premiers pas avec Emacs-Muse Emacs-Muse est un environnement d'écriture et de publication pour Emacs. Il simplifie le processus d'écriture et de publication de documents sous divers formats. Muse consiste en deux parties principales: un mode d'édition de texte pour un écriture de documents et la navigation à l'intérieur des projets Muse, et un ensemble de styles de publication pour créer différentes sortes de produits finals. * Ce document Ce document fournit un exemple de marquage de texte par Muse et fonctionne aussi comme une initiation à Muse. Pour visualiser à quoi qu'il ressemblera publié, saisissez =make examples=. Vous obtiendrez alors un document info, un document HTML, et un document PDF (à condition qu'une distribution de LaTeX soit installée avec les fontes nécessaires). * Pour commencer Pour utiliser Muse, on ajoutera le répertoire contenant les fichiers muse à la variable =load-path= de votre fichier =.emacs= . Ensuite on charge le =muse-mode= et les styles dans lesquels on souhaite publier. Par exemple : (add-to-list 'load-path "") (require 'muse-mode) ; chargement du mode écriture (require 'muse-html) ; chargement des styles de publication qu'on utilise (require 'muse-latex) (require 'muse-texinfo) (require 'muse-docbook) (require 'muse-project) ; publication par projets Une fois que ceci aura été chargé, la commande =M-x muse-publish-this-file= publiera le document saisi dans n'importe quel des styles disponibles. Si vous validez =muse-mode= à l'intérieur d'un tampon (buffer), en tapant =M-x muse-mode=, cette commande sera accessible avec =C-c C-t=. * Création d'un projet Muse On veut souvent publier de manière automatique tous les fichiers d'un certain dossier avec un ensemble particulier de styles. Muse permet pour cela la création de «projets». Voici un exemple de projet à définir dans votre fichier =.emacs= : (setq muse-project-alist '(("website" ("~/Pages" :default "index") (:base "html" :path "~/public_html") (:base "pdf" :path "~/public_html/pdf")))) Par les lignes ci-dessus en définit un projet nommé "website", dont les fichiers se trouvent dans le dossier =~/Pages=. La page à visiter par défaut est =index=. Quand ce projet sera publié, chaque page sortira en format HTML dans le dossier =~/public_html=, et comme PDF dans le dossier =~/public_html/pdf=. Dans une page appartenant à un projet, vous pouvez créer un lien à d'autres pages en utilisant la syntaxe =[[nom_de_la_page]]=. * Règles de marquage Un document Muse utilise des règles spéciales de marquage contextuel pour déterminer comment formater le résultat final. Par exemple, si un paragraphe est indenté, Muse suppose qu'il doit être mis en citation. Il n'y a pas énormément de règles de marquage, et on a essayé qu'elles soient aussi simples que possible pour que l'utilisateur puisse se concentrer sur la création de son document plutôt que sur sa mise en forme. ** Paragraphes Dans Muse on sépare les paragraphes par une ligne blanche. Par exemple, le texte de cette section est saisi comme ceci: Dans Muse on sépare les paragraphes par une ligne blanche. Par exemple, le texte de cette section est saisi comme ceci: ** Paragraphes centrés et citations Une ligne qui commence par six ou plus colonnes ou espaces (qu'il s'agisse de tabulations ou d'espace) indique un paragraphe centré. Ceci est centré Mais quand une ligne commence par une espace de moins de six colonnes, cela indique un paragraphe de citation. ** En-têtes Un en-tête devient le titre d'un chapitre ou d'une section dans le document final -- en fonction du style. Pour indiquer un en-tête, on commence un nouveau paragraphe par un, deux ou trois astérisques, suivi d'une espace et du titre. Puis on commence un autre paragraphe pour saisir le texte de cette section. * Premier niveau ** Second niveau *** Troisième niveau ** Lignes horizontales Quatre tirets ou plus indiquent une ligne horizontale. Attention à ne pas oublier de les entourer de lignes blanches, faute de quoi ils seraient considérés comme appartenant au paragraphe précédent ou suivant! ----- Le séparateur ci-dessus a été produit en saisissant ceci : ----- ** Emphase ou magnification du texte Pour mettre l'emphase sur du texte, on l'entoure de certains caractères spécifiques : *emphase* **emphase forte** ***emphase très forte*** _soulignage_ =verbatim et monospace = La liste ci-dessus apparaîtra comme ceci : *emphase* **emphase forte** ***emphase très forte*** _soulignage_ =verbatim et monospace = ** Insérer des notes de bas de page Une note de bas de page sera appelée simplement par le nombre entre les parenthèses carrées [1].[1]. Pour saisir la note, placer son texte à la fin de votre fichier. =footnote-mode= peut être utilisé pour faciliter grandement la création de ce type de note. Footnotes: [1] Des notes de bas de page sont identifiées par le même nombre entre des parenthèses carrées en début de ligne. On peut utiliser la commande C-c ! a du footnote-mode pour insérer des notes de bas de page en saisissant du texte. C-x C-x permet de revenir au point d'insertion. ** Les vers Pour la poésie il faut que les espaces soient conservées, sans pour autant utiliser le monospace. Pour indiquer cela, on utilise le marquage suivant, qui rappelle les citations dans le courrier électronique : > HERNANI, *faisant un pas* > Sire, > La chose est toute simple,et l'on peut vous la dire. > Nous gravions la sentence au mur de Balthazar. > *Il tire un poignard et l'agite* > Nous rendions à César ce qu'on doit à César. > DON CARLOS > Bien! > *À don Ruy Gomez* > Vous traître, Silva! > DON RUY GOMEZ > Lequel de nous deux, Sire? Le paragraphe ci-dessus apparaîtra ainsi: > HERNANI, *faisant un pas* > Sire, > La chose est toute simple,et l'on peut vous la dire. > Nous gravions la sentence au mur de Balthazar. > *Il tire un poignard et l'agite* > Nous rendions à César ce qu'on doit à César. > DON CARLOS > Bien! > *À don Ruy Gomez* > Vous traître, Silva! > DON RUY GOMEZ > Lequel de nous deux, Sire? (Victor Hugo: **Hernani**, IV, 4) On peut aussi utiliser le délimiteur == si on préfère : HERNANI, *faisant un pas* Sire, La chose est toute simple,et l'on peut vous la dire. Nous gravions la sentence au mur de Balthazar. *Il tire un poignard et l'agite* Nous rendions à César ce qu'on doit à César. DON CARLOS Bien! *À don Ruy Gomez* Vous traître, Silva! DON RUY GOMEZ Lequel de nous deux, Sire? ** Paragraphes sous forme littérale Le délimiteur == est utilisé pour des exemples, quand on doit conserver les espaces, avec texte en monospace et où les caractères spéciaux ne doivent pas être interprétés . Il y a aussi le délimiteur == qui fait qu'un bloc marqué sera laissé entièrement de côté. On peut utiliser cela pour insérer des blocs de code HTML quand le format final est le HTML. Si l'on veut qu'une partie de texte ne soit insérée que quand on publie dans un format particulier on peut utiliser l'attribut =style= du délimiteur ==. Voici quelques exemples. Vous lisez la version HTML PDF Info de ce document. Produit ceci: Vous lisez la version HTML PDF Info de ce document. ConTeXt a été utilisé pour publier ce document. Produit: ConTeXt a été utilisé pour publier ce document. ** Listes Les listes seront obtenues en utilisant des caractères spéciaux en début de ligne. Une espace doit être insérée avant les éléments d'une liste numérotée ou non, pour éviter la confusion avec l'utilisation habituelle de ces caractères. Les types de listes reconnus sont les suivants: -premier élément d'une liste non numérotée -deuxième élément d'une liste non numérotée 1. premier élément d'une énumeration 2. deuxième élément d'une énumeration Terme1 :: Description d'un premier élément Terme2 :: Description d'un deuxième élément Ces listes apparaîtront ainsi: Liste non numérotée: -premier élément d'une liste non numérotée -deuxième élément d'une liste non numérotée Énumération: 1. premier élément d'une énumeration 2. deuxième élément d'une énumeration Définition: Terme1 :: Description d'un premier élément Terme2 :: Description d'un deuxième élément Les listes peuvent être imbriquées l'une dans l'autre. Le niveau de l'imbrication est indiqué par la quantité d'espace en tête de ligne. - Premier niveau, élément non numéroté 1 1. Deuxième niveau, élément numéroté 1 2. Deuxième niveau, élément numéroté 2 - Premier niveau, élément non numéroté 2 Ce qui apparaîtra ainsi : - Premier niveau, élément non numéroté 1 1. Deuxième niveau, élément numéroté 1 2. Deuxième niveau, élément numéroté 2 - Premier niveau, élément non numéroté 2 ** Tableaux Muse peut traiter des tableaux simples. La syntaxe est la suivante : Double barre verticale || Séparation des champs d'en-tête Barre verticale unique | Séparation des champs du corps du tableau D'autres | Éléments du corps Triple barre verticale ||| Séparation des champs du pied du tableau Ce qui sera rendu ainsi[2]: Double barre verticale || Séparation des champs d'en-tête Barre verticale unique | Séparation des champs du corps du tableau D'autres | Élément du corps Triple barre verticale||| Séparation des champs du pied du tableau On peut aussi présenter les tableaux comme ceci : | Barre verticale unique | Séparation des champs du corps du tableau | | D'autres | Élément du corps | Ce qui sera rendu ainsi : | Barre verticale unique | Séparation des champs du corps du tableau | | D'autres | Élément du corps | Pour ceux qui sont familiers avec les tableaux dans le style Org-mode, des variantes simples (sans colonnes groupées ni formules autogénérées) seront prises en compte correctement. De même, les tableaux du style table.el seront publiés à condition que le format de publication soit connu de table.el. ** Balises et liens délimités #exemple Si vous commencez une ligne par "#balise" -- où "balise" peut-être n'importe quel mot ne contenant pas d'espace -- cela définit une balise à ce point du document. Ce point pourra ensuite être référencé en utilisant "page# balise" comme un cible dans un lien Muse (voir plus bas). Cliquer [[#exemple][ici]] pour revenir au paragraphe précédent. ** URLs et adresses électroniques Une URL ou une adresse e-mail rencontrée dans le texte est publiée comme un lien hypertexte si le style utilisé pour la publication le permet. Par exemple, la dernière version de Muse peut être téléchargée à l'adresse http://download.gna.org/muse-el et du courrier peut être envoyé à mwolson@gnu.org. ** Images Si une URL a comme extension celle d'un format d'image connu, elle sera affichée si possible. Pour créer un lien à une image plutôt que de l'afficher, mettre le texte "URL:" immédiatement devant le lien. Voici un exemple d'image affichée : Produit avec [[muse-made-with.png]] Emacs Muse. Ce sera publié ainsi : Produit avec [[muse-made-with.png]] Emacs Muse. Voici un exemple d'image avec légende : [[emacs-muse.png][Muse, l'outil de publication (d'un sous-ensemble) des grands penseurs]] Qui sera publié ainsi : [[emacs-muse.png][Muse, l'outil de publication (d'un sous-ensemble) des grands penseurs]] Ce qui suit sera publié uniquement sous forme de lien. Le logo Muse: [[URL:http://mwolson.org/static/logos/emacs-muse.png]]. Le logo Muse: [[URL:http://mwolson.org/static/logos/emacs-muse.png]]. ** Liens Un hyperlien peut référencer une URL, ou une autre page à l'intérieur d'un projet Muse. De plus, un texte descriptif peut être spécifié, il sera affiché plutôt que le lien pour les styles qui acceptent les descriptions de lien. La syntaxe est la suivante : [[lien cible][description]] [[lien cible sans description]] Donc le texte: Muse peut être téléchargé[[http://download.gna.org/muse-el/][ici]], ou ici : [[http://download.gna.org/muse-el/]]. Sera publié comme ceci : Muse peut être téléchargé [[http://download.gna.org/muse-el/][ici]], ou ici : [[http://download.gna.org/muse-el/]]. ** Code source Si htmlize.el (version 1.34 ou postérieure) est installé sur votre machine, il est possible de publier du HTML colorisé pour le code source de tout mode majeur supporté par Emacs en utilisant le délimiteur ==. Si le style de publication n'est pas le HTML, le texte entre les délimiteurs est traité comme s'il y avait un délimiteur ==. Voici un exemple de code C. Muse cheche l'élément =lang= et lui ajoute ="-mode"= pour déterminer quel mode majeur doit être utilisé pour la colorisation du code. #include char *unused; int main (int argc, char *argv[]) { puts("Hello, world!\n"); } Voici le résultat colorisé. Son apparence peut varier si vous avez configuré certaines faces. #include char *unused; int main (int argc, char *argv[3]) { puts("Hello, world!\n"); } ** Lisp, Perl, Ruby, Python, ou Shell embarqué Des types de marquage arbitraires peuvent être réalisés grâce au délimiteur ==, le seul des délimiteurs Muse supporté dans le texte d'en-tête ou de bas de page d'un style. Avec le délimiteur ==, on peut générer n'importe quel texte final. Le produit du code sera marqué si le délimiteur == apparaît dans le corps du texte. (concat "Cette forme sera " "inserée") Ce code sera rendu ainsi: (concat "Cette forme sera " "inserée") On peut aussi traiter le résultat comme s'il était à l'intérieur d'un des délimiteurs ==, ==, ou == , en spécifiant ="example"=, ="src"=, ou ="verse"= comme attribut =markup= du délimiteur. Par exemple: (concat "Inserez" " moi") Le résultat est: (concat "Inserez" " moi") Cet attribut =markup= peut aussi être passé aux délimiteurs ==, ==, ==, and == , qui interprètent respectivement les codes Perl, Ruby, Python, Shell. * Styles de publication Une des caractéristiques majeures de Muse est sa capacité à publier un simple texte de départ dans une variété de styles à l'arrivée. Muse permet aussi facilement de créer de nouveaux styles, ou d'en dériver à partir de ceux qui existent. ** Dériver à partir d'un style existant Pour créer un nouveau style à partir d'un style existant, on utilise la fonction =muse-derive-style=: (muse-derive-style NOM-DÉRIVÉ NOM-DE-BASE PARAMÈTRES-DU-STYLE) Le nom dérivé est une chaîne de caractères définissant le nouveau style, comme "mon-html". Le nom de base doit identifier une style existant, comme "html" -- si on a chargé =muse-html=. Les paramètres de style sont les mêmes que ceux qu'on utilise pour créer un style, et ils remplacent les définitions présentes dans le style de base. Le plus souvent, cela sera utile pour définir un en-tête, un pied de page, une feuille de style, pour un projet particulier. En voici un exemple. (setq ma-feuille-de-style (concat "")) (muse-derive-style "mon-xhtml" "xhtml" :header "~/.emacs.d/muse/different-header.html" :footer "~/.emacs.d/muse/different-footer.html" :style-sheet ma-feuille-de-style) De nombreux paramètres supportent d'être ainsi remplacés partiellement. Par exemple: avec =:functions=, si une function de markup n'est pas trouvée dans la liste de fonctions du style dérivé, c'est la fonction du style de base qui sera appelée. Si un paramètre prend le nom d'une fonction, alors si non-nil est retourné par cette fonction, aucun autre processus ne sera appelé. Si la fonction retourne nil, tout autre fonction dans le style de base sera appelée. ** Créer un nouveau style Pour créer un nouveau style, utiliser =muse-define-style=: (muse-define-style NOM PARAMETRES-DE-STYLE) Quand on veut créer un nouveau style, le mieux est d'examiner d'abord le code source d'autres styles, pour avoir une idée de ce qui est nécessaire. Chaque format de sortie devrait avoir un fichier propre, contenant tous les styles ayant la même base. Par exemple, les styles =latex=, =latex-slides=, =pdf= et =latex-slides-pdf= sont tous inclus dans le fichier =muse-latex.el=. Si vous désirez être l'auteur de documents avec copyright pour la Free Software Foundation (nous vous aiderons dans cette démarche), les auteurs de Muse pourraient être intéressés à inclure votre travail dans les versions futures de Muse. * Licence Ce document "premiers pas" peut être redistribué et/ou modifié selon les termes de la GNU General Public License telle que publiée par la Free Software Foundation; la version 2, ou (suivant votre choix) toute version postérieure. Footnotes: [1] Ceci est une note. [2] Les trois barres verticales pour le bas de tableau ne sont pas fonctionnelles dans les styles =latex= ou =context= et leurs dérivés. [3] Une autre note, non référencée