I added ngerman shorthands to my english babel as described here. But they do not work for glossaries, and probably in other macors as discussed here. I load all the acronyms as a separate file in the preamble.




\newacronym{CP-OFDM}{CP"~OFDM}{Cyclic Prefix OFDM}


How can I solve the problem for acronyms? One solution is to move them inside the main text, after \begin{document}.

  • Babel shorthands are enabled only after \begin{document}. Just say \AtBeginDocument{\input{file}} instead of \input{file} (where file.tex contains the acronym definitions).
    – egreg
    Feb 19, 2013 at 10:11
  • If the only language is english, you can use "user shorthands" with \useshorthands{"} and \defineshorthand{"~}{...}, which is much simpler. Feb 19, 2013 at 15:49

1 Answer 1


There are other questions in the site that cover similar problems

but this one raises a different problem.

As explained in the second linked question, shorthands are enabled only after \begin{document} and babel has good reasons to do this.

However, a long list of acronyms after \begin{document} would pollute the document and you're right when thinking that they are best placed in the preamble.

A solution might be

<list of acronyms>

and the list can also be put in a file myacronyms.tex so that the above becomes


However, there's a better solution for this setup:


will load the file after the shorthands are enabled, while the instruction is still in the preamble.

If you use the \shorthandon way, enable all shorthand prefixes you need. Here you find a list of shorthands for the various languages.

  • If you use the \AtBeginDocument approach, you'll need to put it before you load glossaries to avoid the generation of the .glsdefs file. (Otherwise the glossary/acronym definitions will occur after \newglossaryentry changes its behaviour.) Mar 14, 2014 at 15:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .