在所有 Babel 语言中保留原始的 \-(自由连字符)

在所有 Babel 语言中保留原始的 \-(自由连字符)

更少babel的 LaTeX\-中,将添加一个自由连字符,使其成为单词中唯一允许的断点。这也是最多 babel-语言,但有些语言,例如丹麦语和荷兰语,重新定义\-为仅添加更远连字符指向已经提供的连字符。在我看来,这很不幸(我花了很长时间才弄清楚为什么我的\-s 不再起作用……)并且在校对多语言书籍时变得很麻烦,这个过程通常涉及通过专门提供正确的连字符来纠正错误或不需要的连字符。

重新定义\-\babelhyphen*{soft}有效,但将在下一次语言切换时重置。我该如何全部\-语言在序言中一劳永逸地显示标准行为?

\documentclass{book}

\usepackage[english,danish]{babel}

\usepackage{showhyphens} %needs LuaTeX

%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\selectlanguage{danish}
\renewcommand{\-}{\babelhyphen*{soft}}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit  Morbi princip\-erklæring  ipsum sed pharetra gravida, orci magna rhoncus neque, id pulvinar odio lorem non turpis. Nullam sit amet enim. Suspendisse id velit vitae ligula volutpat condimentum. Aliquam erat volutpat. Sed quis velit. Nulla facilisi. Nulla libero. Vivamus pharetra posuere sapien. Nam consectetuer. Sed aliquam, nunc eget euismod ullamcorper, lectus nunc ullamcorper orci, fermentum bibendum enim nibh eget ipsum. Donec porttitor ligula eu dolor. Maecenas vitae nulla consequat libero cursus venenatis.


\selectlanguage{english}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit  Morbi princip\-erklæring  ipsum sed pharetra gravida, orci magna rhoncus neque, id pulvinar odio lorem non turpis. Nullam sit amet enim. Suspendisse id velit vitae ligula volutpat condimentum. Aliquam erat volutpat. Sed quis velit. Nulla facilisi. Nulla libero. Vivamus pharetra posuere sapien. Nam consectetuer. Sed aliquam, nunc eget euismod ullamcorper, lectus nunc ullamcorper orci, fermentum bibendum enim nibh eget ipsum. Donec porttitor ligula eu dolor. Maecenas vitae nulla consequat libero cursus venenatis.

\selectlanguage{danish}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit  Morbi princip\-erklæring  ipsum sed pharetra gravida, orci magna rhoncus neque, id pulvinar odio lorem non turpis. Nullam sit amet enim. Suspendisse id velit vitae ligula volutpat condimentum. Aliquam erat volutpat. Sed quis velit. Nulla facilisi. Nulla libero. Vivamus pharetra posuere sapien. Nam consectetuer. Sed aliquam, nunc eget euismod ullamcorper, lectus nunc ullamcorper orci, fermentum bibendum enim nibh eget ipsum. Donec porttitor ligula eu dolor. Maecenas vitae nulla consequat libero cursus venenatis.

\end{document} 

答案1

babel每次执行后都会有一个钩子\extras<lang>

\usepackage[english,danish]{babel}

\AddBabelHook{softhyphen}{afterextras}
  {\renewcommand{\-}{\babelhyphen*{soft}}}

\usepackage{showhyphens} %needs LuaTeX

这里softhyphen只是一个用来标记钩子的名称(您可以更改它),并且afterextras是执行代码的点(我认为是不言自明的)。

相关内容