J'ai essayé de trouver une réponse à ma question sur le forum mais je n'ai pas trouvé de réponses (ou alors je ne sais pas chercher...)

Donc je souhaite trouver une fonction ou créer une macro qui me permettrait de changer la façon dont est présenté un mot. Comme un exemple est plus parlant qu'un long discours :

  • Ascophyllum nodosum → 1ere itération du mot
  • A.nodosum → toutes les autres fois où le mot est appelé.

Je pensais créer une nouvelle entrée de glossaire avec l'ensemble de mes termes mais la première itération appelle à la fois la version longue et la version courte entre parenthèse...

Posée 25 Mai '21, 20:15

Oceanflo's gravatar image

Oceanflo
4313
Taux d'acceptation : 0%

Modifiée 25 Mai '21, 21:57

denis's gravatar image

denis ♦♦
7.3k1510

1

Bienvenue sur TeXnique.fr ! Les formules de politesse et les signatures sont à éviter : celle(s) de votre contribution a (ont) été supprimée(s).

(25 Mai '21, 21:56) denis ♦♦ denis's gravatar image

On peut tout à fait s'en sortir avec les glossaires tels que proposés par le package glossaries. Voici un ECM à compiler avec (pdf)latex puis makeglossaries puis (pdf)latex :

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{babel}
\usepackage[xindy]{glossaries}
\makeglossaries
\newglossaryentry{anod}{%
  name        = {Ascophyllum nodosum},
  text        = {A.~nodosum},
  description = {bla bla},
  first       = {Ascophyllum nodosum}
}

\begin{document}
La première fois, c'est \gls{anod}, puis c'est \gls{anod} et ça
reste \gls{anod}.
\printglossary
\end{document}


C'est également possible avec le package acro (ne nécessite que (pdf)latex) :

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{acro}
\usepackage{babel}

\newrobustcmd*\newspecies[4][]{%
  \DeclareAcronym{#2}{
    short = {#3} ,
    long = {#4} ,
    #1 ,
    tag = species ,
    first-style= long ,
    format = \itshape
  }%
}
\newspecies{anod}{A.~nodosum}{Ascophyllum nodosum}

\begin{document}
La première fois, c'est \ac{anod}, puis c'est \ac{anod} et ça
reste \ac{anod}.
\printacronyms
\end{document}
Lien permanent

Publiée 25 Mai '21, 21:54

denis's gravatar image

denis ♦♦
7.3k1510
Taux d'acceptation : 53%

Modifiée 25 Mai '21, 21:54

Par exemple :

\documentclass{article}

\newcommand\terme[3]{\expandafter\newif\csname if#1\endcsname
  \csname #1true\endcsname
  \expandafter\def\csname#1\endcsname{\csname if#1\endcsname#2\else#3\fi
    \csname #1false\endcsname}}

\terme{anodosum}{Ascophyllum nodosum}{A. nodosum}

\begin{document}

La premi\`ere fois, c'est \anodosum, puis c'est \anodosum\ et \c ca
reste \anodosum.
\end{document}
Lien permanent

Publiée 25 Mai '21, 20:26

nmarkey's gravatar image

nmarkey
1.4k29
Taux d'acceptation : 45%

Merci beaucoup nmarkey !

Réponse rapide et fonctionnelle !! Par contre, petite question, je vois l'utilisation du backslash pour faire l'espace entre la fonction et le mot qui suit. Puis-je utiliser \anodosum{} pour que cela se fasse automatiquement ?

(25 Mai '21, 21:19) Oceanflo Oceanflo's gravatar image

Oui, bien sûr.

(25 Mai '21, 21:20) nmarkey nmarkey's gravatar image

Parfait !

Encore merci !

(25 Mai '21, 21:33) Oceanflo Oceanflo's gravatar image
2

@Oceanflo Attention ! Ce commentaire ne comporte qu'une confirmation de solution et c'est à éviter au profit de l'acceptation de la réponse la plus appropriée.

(25 Mai '21, 21:58) denis ♦♦ denis's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.