Take the 2-minute tour ×

What is the difference between \declare@shorthand and \defineshorthand in babel (v.3.9)? Which of the two macros is preferable in a language definition file?

babel.pdf manual (v.3.9) provides an example


and russian.ldf provides similar defintions using \declare@shorthand, e.g.

share|improve this question
add comment

2 Answers

from babel.sty:


defines shorthands for the namespace user

\declare@shorthand{ngerman}{"a}{\textormath{\"{a}\allowhyphens}{\ddot a}}

is used internally for the specific language setting. In the above example one for ngerman and the other for russian.

So \defineshorthand{"*}{\babelhyphen{soft}} is the same as


If you want to define your own language setting which will be loaded by babel then use the internal definition. If you have only a few new shorthands then use the user definition.

share|improve this answer
add comment

In 3.9


is (will be) just an optimized version of


This shorthand is defined for russian and is active only when this language has been selected. Without the optional argument, it's a user shorthand, which is always active and takes precedence over language shorthands. In language definition files, the preferred command is the optimized one (ie, \declare@shorthand).

share|improve this answer
Can I substitute \declare@shorthand{russian}{""}{\hskip\z@skip} with \declare@shorthand{russian}{""}{\babelhyphen{empty}} in LDF? It might be less effective but will be more clear. –  Igor Kotelnikov Jan 11 '13 at 4:18
Javier, I have couple of questions/proposals on development of babel-alpha. How I could contact you? –  Igor Kotelnikov Jan 11 '13 at 5:07
Igor, you can either use the LaTeX list (public) or send to me a message using the form in tex-tipografia.com/contact.html (and then to continue by e-mail). I'm finishing the first beta release. (And instead of \babelhyphen you can use the internal \bbl@hy@empty.) –  Javier Bezos Jan 11 '13 at 9:26
add comment

Your Answer


