4
1

Bonjour, J'utilise le package glossaries pour gérer mes acronymes, dans un document scrbook. Dans le texte j'utilise \gls, et dans les tableaux \acrshort et \acrlong pour gérer la forme manuellement.

Comme j'utilise beaucoup d'acronymes dans ce document, je souhaiterais que la commande \gls affiche la version longue de l'acronyme dans la marge, à gauche ou à droite puisque que le document est twoside, et potentiellement de rendre ce texte plus petit et/ou gris. La version longue s'afficherait donc à côté du paragraphe, dans la marge, sauf la première fois puisque \gls l'affiche directement dans le texte, et seulement dans la partie \mainmatter.

Voici un exemple minimum :

Ouvrir dans l'éditeur Overleaf
\documentclass[chapterprefix,twoside,12pt,DIV=12]{scrbook}
    \KOMAoptions{headsepline=true, chapterprefix=true}
    \usepackage{lmodern}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[french]{babel}
    \usepackage{setspace}
    \setstretch{1.5}
    \usepackage[bottom]{footmisc}

    \usepackage[acronym,smallcaps]{glossaries}
    \makeglossaries

\newglossarystyle{long-ucdesc}{%
  \setglossarystyle{long}%
    \renewcommand{\glossentry}[2]{%
    \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
    \Glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
  }%
}

\newacronym{unesco}{unesco}{United Nations Educational, Scientific and Cultural Organization}

\begin{document}
\frontmatter
\mainmatter
\gls{unesco} ......
\gls{unesco}
\appendix
\backmatter
\printglossary[type=acronym, style=long]\label{listofacronyms}

\end{document}

J'ai vu que quelqu'un avait réussi à faire quelque chose de proche en utilisant le package glossaries-extra, mais je n'ai pas réussi à faire fonctionner son code, certaines fonctions semblent obsolètes.

Merci d'avance pour votre aide !

EDIT 2 : version avec la solution pour les tableaux et le problème dû aux notes de base de page :

Ouvrir dans l'éditeur Overleaf
\documentclass[chapterprefix,twoside,12pt,DIV=12]{scrbook}
\KOMAoptions{headsepline=true, chapterprefix=true}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[onehalfspacing]{setspace}
\usepackage[bottom]{footmisc}
\usepackage{booktabs}
\usepackage{longtable}

\usepackage[acronym,smallcaps]{glossaries}
\makeglossaries

\makeatletter  
\defglsentryfmt[acronym]{\glsgenacfmt  
\ifglsused{\glslabel}{\if@mainmatter\marginpar{{\scriptsize
\textsf{\glsentrylong{\glslabel}}}}\fi}{}}
\makeatother

\newcommand{\mhacrshort}[1]{\acronymfont{\glsentryshort{#1}}}
\newcommand{\mhacrlong}[1]{\glsentrylong{#1}}

\newacronym{unesco}{unesco}{United Nations Educational, Scientific and Cultural Organization}
\newacronym{onu}{onu}{Organisation des Nations Unies}

\begin{document}
\frontmatter
\mainmatter
\chapter{test}
\section{test}
\gls{unesco} ...... \gls{onu}

\gls{onu} ... \gls{unesco}\footnote{\gls{unesco}}
\newpage
\begin{table}[p]
\begin{tabular}{@{}rcl@{}}
\toprule
\textbf{Colonne 1} & \textbf{Colonne 2} & \textbf{Colonne 3} \\
\midrule
\mhacrlong{onu} & 1 & \mhacrshort{unesco} \\
\mhacrshort{onu} & 4 & \mhacrshort{unesco}  \\
\bottomrule
\end{tabular}
\end{table}

\appendix
\backmatter
\gls{unesco}
\printglossary[type=acronym, style=long]\label{listofacronyms}

\end{document}

Posée 03 Jan '20, 12:47

mahrr's gravatar image

mahrr
5315
Taux d'acceptation : 0%

Modifiée 05 Jan '20, 17:08

1

Oui je me suis permis de publier ici, n'ayant pas de réponse sur ces sites. Je peux les supprimer, ou y mettre la réponse proposée ici en renvoyant à cette page.

(03 Jan '20, 17:40) mahrr mahrr's gravatar image

Il me semble que je n'ai pas bien compris votre question. Voulez vous choisir manuellement la forme à afficher ? Si c'est le cas, et si vous n'avez pas besoin d'afficher la version longue dans la marge alors, je pense que ça peut marcher.

(05 Jan '20, 15:33) touhami touhami's gravatar image

@touhami désolé je n'ai pas été clair, effectivement je voulais juste contrôler la forme dans le tableau, sans affichage dans la marge, ça marche donc très bien ainsi ! Et le problème de décalage aux pages suivantes semble venir de l'utilisation de gls dans une footnote{}. Donc s'il n'y a pas de solution facile je peux tout simplement utiliser mhacrshort dans les notes de bas de page ! Par contre auriez-vous une idée pour que l'affichage dans la marge ne se fasse qu'une fois par page si j'utilise plusieurs fois l'acronyme dans la même page ? Merci pour votre patience.

(05 Jan '20, 17:12) mahrr mahrr's gravatar image

Pour utiliser gls dans \footnote, oui c'est difficile, voire impossible.

Pour ne pas afficher la version longue plus qu'une fois par page, c'est faisable, mais je n'ai pas du temps, peut être le mercredi.

(05 Jan '20, 22:19) touhami touhami's gravatar image

OK pour \footnote, je ferai comme pour les tableaux, c'est très bien. Et ça marche pour la version longue une fois par page, pas d'urgence, merci beaucoup.

(05 Jan '20, 22:55) mahrr mahrr's gravatar image

footnote

Je viens de découvrir l'extension sepfootnotes, qui sépare le contenu de la note de son appel. Peut-être une voix possible, à explorer.

Mieux lire dans l'éditeur: La note:

\sepfootnotecontent{clé}{Contenu de la note}

Son appel dans le texte:

\sepfootnote{clé}

et rédiger la note par exemple à la fin du paragraphe.

Catégories de notes: Définir des types de notes par un préfixe et donc afficher leur contenu par catégorie, en bas de page (\newfootnotes) ou en fin de section, de document (\newendnotes) etc.

Fichier de notes: Grouper les notes dans un fichier tex séparé.

(09 Jan '20, 13:19) joseph-tux joseph-tux's gravatar image

Merci @joseph-tux mais à l'utilisation, ne pas avoir la version longue dans la marge dans les tableaux et les notes me paraît plutôt une bonne chose.

@touhami est-ce que je peux mettre votre réponse sur StackExchange (en vous créditant et en renvoyant ici évidemment), ou préférez-vous que je supprime les crossposts ?

(14 Jan '20, 12:24) mahrr mahrr's gravatar image
2

@mahrr Merci, pas besoin, je vais ajouter une réponse là moi-même.

(14 Jan '20, 15:56) touhami touhami's gravatar image
Affichage de 5 parmi 9 Afficher 4 commentaire(s) en plus

Voici un code qui répond à votre demande.

Ouvrir dans l'éditeur Overleaf
\documentclass[chapterprefix,twoside,12pt,DIV=12]{scrbook}
\KOMAoptions{headsepline=true, chapterprefix=true}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[onehalfspacing]{setspace}
\usepackage[bottom]{footmisc}
\usepackage[acronym,smallcaps]{glossaries}
\makeglossaries

\makeatletter  
\defglsentryfmt[acronym]{\glsgenacfmt 
 \ifglsused{\glslabel}{\if@mainmatter\marginpar{{\footnotesize\glsentrylong{\glslabel}}}\fi}{}}
\makeatother

\newacronym{unesco}{unesco}{United Nations Educational, Scientific and Cultural Organization}

\begin{document}
\frontmatter
\mainmatter
\gls{unesco} ......

\gls{unesco}
\newpage
\gls{unesco}
\appendix
\backmatter
\gls{unesco}
\printglossary[type=acronym, style=long]\label{listofacronyms}

\end{document}

[EDIT] Je ne suis pas sûr mais il se peut que la question soit plus simple que ce que j'ai supposé. Pour choisir manuellement entre la version courte et la version longue dans un tableaux, il suffit de définir deux nouvelles commandes comme suit :

\newcommand{\mhacrshort}[1]{\acronymfont{\glsentryshort{#1}}} \newcommand{\mhacrlong}[1]{\glsentrylong{#1}}

ECM

Ouvrir dans l'éditeur Overleaf
\documentclass[chapterprefix,twoside,12pt,DIV=12]{scrbook}
\KOMAoptions{headsepline=true, chapterprefix=true}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[onehalfspacing]{setspace}
\usepackage[bottom]{footmisc}
\usepackage{booktabs}
\usepackage{longtable}

\usepackage[acronym,smallcaps]{glossaries}
\makeglossaries

\makeatletter  
\defglsentryfmt[acronym]{\glsgenacfmt  
\ifglsused{\glslabel}{\if@mainmatter\marginpar{{\scriptsize
\textsf{\glsentrylong{\glslabel}}}}\fi}{}}
\makeatother

\newcommand{\mhacrshort}[1]{\acronymfont{\glsentryshort{#1}}}
\newcommand{\mhacrlong}[1]{\glsentrylong{#1}}

\newacronym{unesco}{unesco}{United Nations Educational, Scientific and Cultural Organization}
\newacronym{onu}{onu}{Organisation des Nations Unies}

\begin{document}
\frontmatter
\mainmatter
\chapter{test}
\section{test}
\gls{unesco} ...... \gls{onu}

\gls{onu} ... \gls{unesco}
\newpage
\begin{table}[p]
\begin{tabular}{@{}rcl@{}}
\toprule
\textbf{Colonne 1} & \textbf{Colonne 2} & \textbf{Colonne 3} \\
\midrule
\mhacrlong{onu} & 1 & \mhacrshort{unesco} \\
\mhacrshort{onu} & 4 & \mhacrshort{unesco}  \\
\bottomrule
\end{tabular}
\end{table}

\appendix
\backmatter
\gls{unesco}
\printglossary[type=acronym, style=long]\label{listofacronyms}

\end{document}

[EDIT] Voici le code modifié qui répond à votre demande.

Ouvrir dans l'éditeur Overleaf
\documentclass[chapterprefix,twoside,12pt,DIV=12]{scrbook}
\KOMAoptions{headsepline=true, chapterprefix=true}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[onehalfspacing]{setspace}
\usepackage[bottom]{footmisc}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{etoolbox}

\usepackage[acronym,smallcaps]{glossaries}
\makeglossaries

\makeatletter  
\defglsentryfmt[acronym]{\glsgenacfmt  
\ifglsused{\glslabel}{\if@mainmatter
\expandafter\ifx\csname mhused\glslabel\endcsname\relax
\expandafter\gdef\csname mhused\glslabel\endcsname{}%
\xappto\mhclearacrmargin{\global\expandafter\expandafter\expandafter\let\expandafter\noexpand\csname mhused\glslabel\endcsname\relax}\marginpar{{\scriptsize
\textsf{\glsentrylong{\glslabel}}}}\fi\fi}{}}
\patchcmd\@outputpage{\botmark}{\botmark \mhclearacrmargin \gdef\mhclearacrmargin{}}{}{}{}
\makeatother

\newcommand{\mhacrshort}[1]{\acronymfont{\glsentryshort{#1}}}
\newcommand{\mhacrlong}[1]{\glsentrylong{#1}}

\newcommand{\mhclearacrmargin}{}

\newacronym{unesco}{unesco}{United Nations Educational, Scientific and Cultural Organization}
\newacronym{onu}{onu}{Organisation des Nations Unies}

\begin{document}
\frontmatter
\mainmatter
\chapter{test}
\section{test}
\gls{unesco} ...... \gls{onu}

\gls{onu} ... \gls{unesco}

\gls{onu} ... \gls{unesco}

\newpage

\gls{unesco} ...... \gls{onu}

\gls{onu} ... \gls{unesco}

\gls{onu} ... \gls{unesco}
\begin{table}[p]
\begin{tabular}{@{}rcl@{}}
\toprule
\textbf{Colonne 1} & \textbf{Colonne 2} & \textbf{Colonne 3} \\
\midrule
\mhacrlong{onu} & 1 & \mhacrshort{unesco} \\
\mhacrshort{onu} & 4 & \mhacrshort{unesco}  \\
\bottomrule
\end{tabular}
\end{table}

\appendix
\backmatter
\gls{unesco}
\printglossary[type=acronym, style=long]\label{listofacronyms}

\end{document}
Lien permanent

Publiée 03 Jan '20, 14:29

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Modifiée 20 Fév '20, 19:35

Super merci beaucoup ! Quelques soucis toutefois : - à la première utilisation d'un acronyme, la version longue n'est plus suivie par la courte entre parenthèses - par la suite, les acronymes n'apparaissent plus en smallcaps, mais en minuscule - je reçois des erreurs Not in outer par mode. \acrshort{...} quand j'utilise acrshort dans les tableaux - LaTeX semble se perdre quand il y a plusieurs acronymes proches et/ou sur la même ligne, en envoyant la version longue sur la marge de la page suivante et parfois du mauvais côté. Peut-être réduire la taille et l'interligne peut-il aider ?

(03 Jan '20, 17:33) mahrr mahrr's gravatar image

J'ai un peu amélioré en réduisant la taille et l'interligne (je m'essaie à la programmation LaTeX, pas évident !) : \defglsentryfmt[acronym]{\glsgenentryfmt \ifglsused{\glslabel}{\if@mainmatter\marginpar{\setstretch{0.5}\textcolor{blueb}{\scriptsize \glsentrylong{\glslabel}}}\fi}{}} Mais j'ai toujours des comportements incohérents avec des versions longues déplacées sur d'autres pages.

(03 Jan '20, 18:28) mahrr mahrr's gravatar image

@mahrr je vais essayer de voir.

(03 Jan '20, 18:36) touhami touhami's gravatar image

@mahrr. J'ai modifié la réponse.

Pour les acrshort dans les tableaux et les autres problème, merci de poster un ECM qui montre le problème.

Pour l'interligne merci de poser une nouvelle question. Par ailleurs, il est préférable de remplacer \usepackage{setspace} \setstretch{1.5} par \usepackage[onehalfspacing]{setspace}.

(03 Jan '20, 19:26) touhami touhami's gravatar image

Merci ! J'ai ajouté pour les tableaux, par contre impossible de reproduire les erreurs de placement quand plusieurs acronymes sont sur une même ligne (version longue du deuxième envoyée sur la page suivante plutôt que juste en dessous de celle du premier) dans un ECM... Serait-il aussi possible que la mise en marge ne se fasse qu'une fois par page plutôt qu'à chaque fois ? Pour setstretch{1.5}, malheureusement ce n'est pas exactement la même chose que onehalfspacing (l'interligne est plus grand avec le premier), et ça correspond mieux aux attentes de l'université (plus proche d'un 1,5 Word).

(04 Jan '20, 16:39) mahrr mahrr's gravatar image

@mahrr je vois le problème des tableaux et c'est compliqué. Je vais essayer.

Par contre je n'arrive pas à reproduire le problème des notes mal placées. Pourriez vous poster une image qui le montre.

(04 Jan '20, 20:09) touhami touhami's gravatar image

@mahrr Je crains que ce n'est pas possible de résoudre les deux problème de manière automatique satisfaisante. Pour résoudre le problème des tableaux, je pense à l'extension marginnote, mais s'il y des acronymes sur une même ligne les notes se superposent.

(04 Jan '20, 20:17) touhami touhami's gravatar image
Affichage de 5 parmi 7 Afficher 2 commentaire(s) en plus
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.