假设我们要排版较长的双语复合词。我们倾向于在第一语言单词结束之后、第二语言单词开始之前立即拆分这些单词;如果结果不好看(例如,框太满),我们希望在单语部分中也允许拆分。
例如,管道和过滤器建筑,Map/Reduce 概念,承担/保证规范, 和快速排序原理— 所有类型的英语+德语。
以下是我们迄今为止的尝试:
\documentclass{article}
\usepackage[USenglish,ngerman]{babel}
\babelprovide[hyphenrules=ngerman-x-latest]{ngerman}%%% according to the documentation of dehyph-exptl.
%\showoutput
\begin{document}
\showhyphens{
\foreignlanguage{USenglish}{Pipes\penalty10000-\penalty2\hskip0pt and\penalty10000-\penalty2\hskip0pt Filters}\penalty10000-\penalty1\hskip0pt Architektur % Pipes-and-Filters-Architektur
\foreignlanguage{USenglish}{Map\penalty10000/\penalty2\hskip0pt Reduce}\penalty10000-\penalty1\hskip0pt Konzept % Map/Reduce-Konzept
\foreignlanguage{USenglish}{Assume\penalty10000/\penalty2\hskip0pt Guarantee}\penalty10000-\penalty1\hskip0pt Spezifikation % Assume/Guarantee-Spezifikation
\foreignlanguage{USenglish}{Quicksort}"-prinzip % Quicksortprinzip
}
\end{document}
这能行吗?我们得到了输出(带有 的连字符
\showhyphens
和带有 的惩罚\showoutput
),这似乎是正确的,但我仍然不确定。上面的排版看起来相当麻烦;有没有更简单的方法可以达到同样的目的?
\penalty10000
单词和斜线或破折号之间真的有必要吗?怎么说呢,
\foreignlanguage{USenglish}{Quicksort}"-prinzip
我们更喜欢在英语部分和德语部分之间进行分解,而不是在两个部分中的任何一个内部进行分解?
答案1
您告诉我们,您的文档几乎全部是德语,除了“一些英语(复合词或简单词)、一些英语缩写、一些简短的英语短语、一些混合的英德复合词和一些完整的英语句子”之外。我认为您知道如何(在框架内babel
)有效地处理简短的英语短语。缩写和首字母缩略词不应该(永远?)允许使用连字符,对吗?那么,主要问题是如何处理混合的英德复合词,您提供了四个选择示例:Quicksortprinzip
、、和。Pipes-and-Filters-Architektur
Map/Reduce-Konzept
Assume/Guarantee-Spezifikation
我的观点是将这些情况视为(大多数情况下)德语结构。因此,请使用\slash
而不是/
来允许换行,并使用 babel-german"=
快捷方式允许对复合连字符词的组成部分进行连字符连接。最后,使用\babelhyphenation[ngerman]{....}
来指示不是为某些单词添加连字符。例如,如果任其发展,babel-german 会在 和 中“找到” tso 连字符点assume
;reduce
我建议完全禁止使用这两个单词的连字符。
我使用LuaLaTeX来编写这个测试文档,主要是为了能够实现段落中第一个单词的连字。
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage[english,ngerman]{babel}
%% suppress hyphenation for selected English words in a German-language context
\babelhyphenation[ngerman]{guarantee filters reduce assume}
\setlength\parindent{0pt}
\setlength\textwidth{1sp}
\let\oldslash\slash
\renewcommand\slash{\oldslash\hspace{0pt}}
\begin{document}
Quicksortprinzip
\smallskip
Pipes"=and"=Filters"=Architektur
\smallskip
Map\slash Reduce"=Konzept
\smallskip
Assume\slash Guarantee"=Spezifikation
\end{document}