<TeXmacs|1.0.7.3>

<style|tmdoc>

<\body>
  <tmdoc-title|Styles bibliographiques pour <TeXmacs>>

  <section|Styles bibliographiques>

  Il est possible d'associer à une bibliographie BibTeX un ou plusieurs
  styles, qu'ils soient standards ou personnalisés. Les styles BibTeX sont
  dénotés par leur nom usuel. Les styles personnalisés propres à <TeXmacs>
  sont systématiquement préfixés par <verbatim|tm-> (par exemple, le syle
  <verbatim|tm-plain> correspond au style <verbatim|plain> de <TeXmacs>).
  D'autres styles peuvent être ajoutés dans le répertoire
  <verbatim|$TEXMACS_PATH\\prog\\bibtex>.

  Pour l'éditeur, chaque style correspond à un fichier <verbatim|.scm>. Les
  fichiers correspondant à chaque style sont traités comme des programmes
  Scheme ordinaire : il est nécessaire de respecter scrupuleusement
  l'utilisation des fonctions spécifiques aux styles bibliographiques.

  <section|Styles BibTeX>

  Actuellement, les styles BibTeX suivants ont été implémentés :
  <verbatim|abbrv>, <verbatim|alpha>, <verbatim|ieeetr>, <verbatim|plain> et
  <verbatim|siam>. Leur utilisation ne nécessite pas l'installation de
  BibTeX.

  <section|Création de styles bibliographiques>

  Si les fichiers de style standards de <TeXmacs> ne sont pas adaptés à vos
  besoins, vous pouvez en créer d'autres. Néanmoins, la création d'un fichier
  de style à partir de rien est une tâche complexe. Nous vous recommandons
  donc de vous servir des fichiers de style ou des modules existants ou de
  les personnaliser.

  <subsection|Étude d'un exemple>

  Un fichier de style bibliographique est un<with|font-shape|italic|> fichier
  placé dans le répertoire <verbatim|$TEXMACS_PATH/prog/bibtex> portant le
  nom du style suivi de l'extension <verbatim|.scm>, par exemple
  <verbatim|example.scm> pour un style <verbatim|example> ; ce dernier sera
  dénoté par <verbatim|tm-example> lors de son utilisation dans un document
  <TeXmacs>.

  Tout fichier de style doit se déclarer en tant que module à l'aide de la
  déclaration suivante :

  <\scm-fragment>
    (texmacs-module (bibtex example)

    \ \ (:use (bibtex bib-utils)))
  </scm-fragment>

  Le module <verbatim|bib-utils> contient toutes les fonctions nécessaires à
  la rédation et à l'interprétation d'un fichier de style bibliographique.

  Tout fichier de style doit se déclarer en tant que style bibliographique à
  l'aide de la commande suivante :

  <scm-fragment|(bib-define-style "example" "plain")>

  Le premier paramètre de la fonction <scm|bib-define-style> est le nom du
  style courant, et le second paramètre est le nom du style par défaut,
  <verbatim|plain> dans notre cas. Si une fonction n'est pas définie dans le
  style courant, la version du style par défaut est alors utilisée
  automatiquement.

  Ainsi, notre fichier de style minimal a l'aspect suivant :

  <\scm-fragment>
    (texmacs-module (bibtex example)

    \ \ (:use (bibtex bib-utils)))

    \;

    (bib-define-style "example" "plain")
  </scm-fragment>

  Chaque fonction de formatage définie dans le style par défaut peut être
  surchargée dans le fichier de style courant. Par exemple, la fonction de
  formatage de la date dans le style <verbatim|plain> s'appelle
  <scm|bib-format-date> ; elle redéfinissable dans notre style de la manière
  suivante :

  <\scm-fragment>
    (tm-define (bib-format-date e)

    \ \ (:mode bib-example?)

    \ \ (bib-format-field e "year"))
  </scm-fragment>

  Toute fonction exportée doit être préfixée par <verbatim|bib->. Une
  fonction surchargée doit être suivie de la directive <scm|(:mode
  bib-example?)>, dans laquelle <verbatim|example> est le nom du style en
  cours.

  Voici maintenant à quoi ressemble notre fichier de style
  <verbatim|example.scm> :

  <\scm-fragment>
    (texmacs-module (bibtex example)

    \ \ (:use (bibtex bib-utils)))

    \;

    (bib-define-style "example" "plain")

    \;

    (tm-define (bib-format-date e)

    \ \ (:mode bib-example?)

    \ \ (bib-format-field e "year"))
  </scm-fragment>

  <subsection|Fonctions utiles pour la création de fichiers de style>

  <\explain>
    <scm|(bib-abbreviate name dot spc)><explain-synopsis|abbréviation d'un
    nom>
  <|explain>
    Cette fonction crée un arbre <TeXmacs> correspondant à l'abbréviation du
    nom contenu dans <scm|name> (un arbre <TeXmacs>) : on récupère la liste
    des premières lettres de chaque mot, suivi de <scm|dot> (un arbre
    <TeXmacs>) et séparées par <scm|spc> (un arbre <TeXmacs>).
  </explain>

  <\explain>
    <scm|(bib-add-period tm)><explain-synopsis|ajout d'un point>
  <|explain>
    Cette fonction crée un arbre <TeXmacs> en ajoutant un point à la fin de
    l'arbre <TeXmacs> <scm|tm>.
  </explain>

  <\explain>
    <scm|(bib-default tm)><explain-synopsis|arbre <TeXmacs> par défaut>
  <|explain>
    Cette fonction crée un arbre <TeXmacs> sans occurence du label
    <verbatim|keepkase>.
  </explain>

  <\explain>
    <scm|(bib-define-style name default)><explain-synopsis|déclaration d'un
    style>
  <|explain>
    Cette fonction déclare un style nommé <scm|name> (de type string) avec
    <scm|default> (de type string) le style par défaut. Le style est alors
    sélectionné en choisissant <verbatim|tm-><scm|name> lors de l'ajout d'une
    bibliographie à un document. Quand une fonction de formatage n'est pas
    définie dans le style, celle du style <scm|default> est évaluée en
    remplacement.
  </explain>

  <\explain>
    <scm|(bib-emphasize tm)><explain-synopsis|mise en italique>
  <|explain>
    Cette fonction renvoie un arbre <TeXmacs> correspondant à la mise en
    italique de l'abre <TeXmacs> <scm|tm>.
  </explain>

  <\explain>
    <scm|(bib-empty? entry field)><explain-synopsis|test à zéro d'un champ>
  <|explain>
    Cette fonction renvoie le booléen <scm|#t> si le champ de l'entrée
    <scm|entry> dont le nom est <scm|field> (de type string) est vide ou
    inexistant ; elle renvoie <scm|#f> dans le cas contraire.
  </explain>

  <\explain>
    <scm|(bib-field entry field)><explain-synopsis|récupération d'un champ>
  <|explain>
    Cette fonction crée un arbre <TeXmacs> correspondant au contenu du champ
    de l'entrée <scm|entry> dont le nom est <scm|field> (de type string),
    sans aucun formatage. Dans certains cas, une donnée spécifique est
    renvoyée :

    <\itemize-dot>
      <item>si <scm|field> est égal à <scm|"author"> ou <scm|"editor">, la
      donnée renvoyée est un arbre dont le label est <verbatim|bib-names>,
      contenant une liste de noms d'auteurs ; chaque nom d'auteur est un
      arbre dont le label est <verbatim|bib-name> et qui contient quatre
      éléments, dans l'ordre : le prénom, la particule, le nom et un
      qualificatif (junior ou senior).

      <item>si <scm|field> est égal à <scm|"page">, la donnée contient une
      liste d'entiers : soit une liste vide, soit un singleton contenant la
      page référencée, soit un couple dénotant l'intervalle des pages
      référencées.
    </itemize-dot>
  </explain>

  <\explain>
    <scm|(bib-format-field entry field)><explain-synopsis|formatage basique
    d'un champ>
  <|explain>
    Cette fonction crée un arbre <TeXmacs> correspondant au contenu du champ
    de l'entrée <scm|entry> dont le nom est <scm|field> (de type string),
    avec un formatage basique.
  </explain>

  <\explain>
    <scm|(bib-format-field-Locase entry field)><explain-synopsis|formatage
    spécial d'un champ>
  <|explain>
    Cette fonction est similaire à la fonction <scm|bib-format-entry> ; mais
    le champ est formaté en minuscules, avec une majuscule en tête.
  </explain>

  <\explain>
    <scm|(bib-locase tm)><explain-synopsis|mise en minucule>
  <|explain>
    Cette fonction crée un arbre <TeXmacs> en mettant en minuscule toutes les
    lettres de l'arbre <TeXmacs> <scm|tm>, sauf celles englobées dans un bloc
    <verbatim|keepkase>.
  </explain>

  <\explain>
    <scm|(bib-new-block tm)><explain-synopsis|nouveau bloc>
  <|explain>
    Cette fonction crée un arbre <TeXmacs> consistant en un bloc contenant
    l'arbre <TeXmacs> <scm|tm>.
  </explain>

  <\explain>
    <scm|(bib-new-list sep ltm)><explain-synopsis|liste séparée>
  <|explain>
    Cette fonction crée un arbre <TeXmacs> en concaténant tous les éléments
    de la liste <scm|ltm> (ses éléments sont des arbres <TeXmacs>) en les
    séparant par l'arbre <TeXmacs> <scm|sep>.
  </explain>

  <\explain>
    <scm|(bib-new-list-spc ltm)><explain-synopsis|liste séparée par des
    blancs>
  <|explain>
    Cette fonction est équivalente à l'appel de <scm|(bib-new-list " " ltm)>.
  </explain>

  <\explain>
    <scm|(bib-new-sentence ltm)><explain-synopsis|nouvelle phrase>
  <|explain>
    Cette fonction crée un arbre <TeXmacs> correspondant à une phrase
    correctement ponctuée, contenant tous les éléments de la liste <scm|ltm>
    (ses éléments sont des arbres <TeXmacs>) séparés par des virgules.
  </explain>

  <\explain>
    <scm|(bib-null? v)><explain-synopsis|test à zéro>
  <|explain>
    Cette fonction renvoie le booléen <scm|#t> si la valeur <scm|v> est vide
    (<with|font-shape|italic|i.e.> la donnée vide correspondant à son type,
    comme la liste vide pour le type list) ; elle renvoie <scm|#f> dans le
    cas contraire.
  </explain>

  <\explain>
    <scm|(bib-prefix tm nbcar)><explain-synopsis|préfix d'un arbre <TeXmacs>>
  <|explain>
    Cette fonction renvoie une chaîne de caractères contenant les <scm|nbcar>
    premiers caractères de l'arbre <TeXmacs> <scm|tm>.
  </explain>

  <\explain>
    <scm|(bib-purify tm)><explain-synopsis|applatissement d'un arbre
    <TeXmacs>>
  <|explain>
    Cette fonction crée une chaîne de caractères à partir des suites de
    lettres de l'arbre <TeXmacs> <scm|tm>.
  </explain>

  <\explain>
    <scm|(bib-simplify tm)><explain-synopsis|simplification d'un arbre
    <TeXmacs>>
  <|explain>
    Cette fonction renvoie un arbre <TeXmacs> correspondant à la
    simplification de l'abre <TeXmacs> <scm|tm>, c'est-à-dire la
    concaténation des chaînes de caractères adjacentes, l'élimination des
    n÷uds inutiles, etc.
  </explain>

  <\explain>
    <scm|(bib-text-length tm)><explain-synopsis|longueur d'un arbre
    <TeXmacs>>
  <|explain>
    Cette fonction renvoie le nombre de caractères de l'arbre <TeXmacs>
    <scm|tm>.
  </explain>

  <\explain>
    <scm|(bib-translate msg)><explain-synopsis|traduction>
  <|explain>
    Cette fonction traduit le message <scm|msg> (de type string) de l'anglais
    vers la langue du document en cours d'édition.
  </explain>

  <\explain>
    <scm|(bib-upcase tm)><explain-synopsis|mise en majuscule>
  <|explain>
    Cette fonction crée un arbre <TeXmacs> en mettant en majuscule toutes les
    lettres de l'arbre <TeXmacs> <scm|tm>, sauf celles englobées dans un bloc
    <verbatim|keepkase>.
  </explain>

  <\explain>
    <scm|(bib-upcase-first tm)><explain-synopsis|majuscule en tête>
  <|explain>
    Cette fonction crée un arbre <TeXmacs> en mettant en majuscule la
    première lettre de l'arbre <TeXmacs> <scm|tm>, sauf si elle est englobée
    dans un bloc <verbatim|keepkase>.
  </explain>

  <\explain>
    <scm|(bib-with-style style expr)><explain-synopsis|style local>
  <|explain>
    Cette fonction exécute l'expression <scm|expr> comme si le style en cours
    était <scm|style> (de type string).
  </explain>
</body>

<\initial>
  <\collection>
    <associate|language|french>
    <associate|preamble|false>
  </collection>
</initial>