13

If babel doesn't know how to hyphenate a word, I can inform it of good line breaks with \babelhyphenation:

\documentclass{article}
\usepackage[nynorsk]{babel}
    \babelhyphenation[nynorsk]{fram-halds-skulen}
\begin{document}
framhaldsskulen
\end{document}

But how do I do this with polyglossia? The documentation doesn't say anything about it. \babelhyphenation obviously doesn't work:

\documentclass{article}
\usepackage{polyglossia}
    \setdefaultlanguage{nynorsk}
    \babelhyphenation[nynorsk]{fram-halds-skulen}
\begin{document}
framhaldsskulen
\end{document}

! Undefined control sequence.
l.4 ^^I\babelhyphenation
                        [nynorsk]{fram-halds-skulen}
? 
3
  • 2
    I would assume you can use \hyphenation{fram-halds-skulen} as long as the right language is in scope at that point Nov 20, 2014 at 22:30
  • @DavidCarlisle Right, I only tried \hyphenation[nynorsk]{fram-halds-skulen}, which didn't work. Then how will polyglossia understand what language the hyphenation is for if I just set \hyphenation{fram-halds-skulen}?
    – Sverre
    Nov 20, 2014 at 22:33
  • 1
    it's a tex primitive it is the same mechanism as tex knows which hyphenation table to use for text at that point. Nov 20, 2014 at 22:35

1 Answer 1

13

As usual, in the example the lines are overfull on purpose, so as to force hyphenation.

\documentclass{article}

\usepackage{polyglossia}
\setmainlanguage{nynorsk}

\begin{hyphenrules}{nynorsk}
\hyphenation{fram-halds-skulen}
\end{hyphenrules}

\begin{document}

\parbox{0pt}{\hspace{0pt}framhaldsskulen}

\end{document}

enter image description here

Use the same trick of \begin{hyphenrules} if you have different languages in your document and want to add some hyphenation rules for single words.


A possibly better interface:

\documentclass{article}

\usepackage{polyglossia}

\makeatletter
\newcommand\sethyphenation[3][]{%
  \begingroup
  \ifcsundef{#2@loaded}
    {\xpg@nogloss{#2}}
    {\setkeys{#2}{#1}\xpg@set@language{#2}%
     \hyphenation{#3}}%
  \endgroup
}
\@onlypreamble\sethyphenation
\makeatother


\setmainlanguage{nynorsk}
\setotherlanguage[variant=british]{english}

\sethyphenation{nynorsk}{fram-halds-skulen}

\sethyphenation{english}{tes-t-word}

\begin{document}

\parbox{0pt}{\hspace{0pt}framhaldsskulen testword}

\selectlanguage{english}

\parbox{0pt}{\hspace{0pt}framhaldsskulen testword}

\end{document}

The \sethyphenation command accepts also an optional argument such as variant=british, but at the moment it wouldn't do much good, because the same option to \selectlanguage doesn't seem to have any effect.

enter image description here

10
  • Ah! \begin{hyphenrules}!
    – Sverre
    Nov 20, 2014 at 22:36
  • @Sverre Yes, babel 3.9 uses a similar trick, but defines the \babelhyphenation command; there's no corresponding command in polyglossia, currently.
    – egreg
    Nov 20, 2014 at 22:37
  • 1
    Just an extra note regarding variants, it is not quite clear what language argument one should pass to hypenrules. In the case of \setdefaultlanguage[variant=british]{english} it turns out one needs \begin{hyphenrules}{ukenglish}..., which I discovered by checking lua's messages in the log file. Nov 27, 2014 at 19:12
  • 1
    If the word to be hyphenated contains a hyphen itself (such as “non-degenerate”), how would one write the \hyphenation command for it?
    – Ruud
    Apr 28, 2015 at 9:02
  • 3
    @RuudvA You don't. By rule, TeX breaks words with explicit hyphens only at those hyphens.
    – egreg
    Apr 28, 2015 at 9:17

You must log in to answer this question.

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