Latest news 2021-09-06: new blog post "Legacy Documents and TeX Live Docker Images".

Bug Tracker

ID 85🔗
Date: 2015-04-16 20:34:27
Status Closed (Not a Bug)
Category glossaries
Version 4.15
Summary First use \Gls capitalizes all

Sign in to subscribe to notifications about this report.

Description

According to the manual chapter 13, a \newacronym command uses the 'short', 'shortplural', 'long' and 'longplural' items in \newglossaryentry, and defines it as being of type=\acronymtype.

Therefore, to allow a glossary entry to show up with a full description in the glossaries list but act as acronyms in the text, it should be possible to use \newglossaryentry with these fields specified.

Unfortunately, doing so breaks the working of the capitalization: on first use with \Gls it capitalizes the full 'long' entry instead of only the first letter of the entry. The second time \Gls is used (on the 'short' entry), it does work correctly (capitalizing only the first letter).

MWE

Download (768B)

\documentclass{article}

\usepackage{glossaries}

\makeglossaries

\newglossaryentry{slns} {
	name = {slns},
	type = \acronymtype,
	description = {This is the description of the glossary entry, but it acts as an acronym},
	short = {SLNS},
	shortplural = {SLNSs},
	long = {some long named system},
	longplural = {some long named systems},
	first = {\glsentrylong{slns} (\glsentryshort{slns})},
	firstplural = {\glsentrylongpl{slns} (\glsentryshortpl{slns})},
}

\begin{document}

\printglossaries

This capitalises everything of the 'long' entry: \Gls{slns}. But this one only capitalises the first letter of the 'short' entry: \Gls{slns}.

\glsresetall
The same for the plural versions: \Glspl{slns} followed by \Glspl{slns}.

\end{document}

Evaluation

This doesn't work because \Gls{slns} is effectively trying to do

\makefirstuc{\glsentrylong{slns} (\glsentryshort{slns})}
According to the design of \makefirstuc this does
\glsentrylong{\MakeUppercase slns} (\glsentryshort{slns})
So this isn't a bug in glossaries but is a feature of \makefirstuc. This is why the generic acronym style redefines \newacronym to expand the value of the long key before internally applying \newglossaryentry.

You need to try one of the following instead:

  1. Switch on the expansion of the fields (which means protecting any fragile commands).
  2. Use a method similar to \SetGenericNewAcronym described more fully in section 1.18 of the documented code.
  3. Define an acronym style (which internally uses \SetGenericNewAcronym) with \newacronymstyle.
The best approach is the last one, which was implemented to avoid this issue. The final argument of \newacronymstyle can include something like:
\renewcommand*{\GenericAcronymFields}{first={\the\glslongtok\space(\the\glsshorttok)}}

Comments

0 comments.


Add Comment

Name (optional):

Are you human? Please confirm the bug report ID (which can be found at the top of this page) or login if you have an account.

Comment:

You can use the following markup:

Block:

[pre]Displayed verbatim[/pre]
[quote]block quote[/quote]

In line:

[tt]code[/tt]
[file]file/package/class name[/file]
[em]emphasized text[/em]
[b]bold text[/b]
[url]web address[/url] [sup]superscript[/sup]
[sub]subscript[/sub]

Ordered list:
[ol]
[li]first item[/li]
[li]second item[/li]
[/ol]

Unordered list:
[ul]
[li]first item[/li]
[li]second item[/li]
[/ul]

You can use the Preview button to review your message formatting before submitting.

Page permalink: https://www.dickimaw-books.com/bugtracker.php?key=85