德语连字问题

德语连字问题

我遇到了连字符问题,但无法找到解决方案。

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[german,ngerman]{babel}
\selectlanguage{ngerman}
\usepackage{cite}

\hyphenation{(Web"~)""Frame"-works}

错误信息是:

描述 路径 资源 位置 类型 不正确的 \hyphenation 将被刷新。\hyphenation{(Web"~ (followed by: )""Frame"-works}) 第 84 行 Texlipse 构建错误 描述 路径 资源 位置 类型 不是字母。\hyphenation{( (followed by: Web"~)""Frame"-works}) 第 84 行 Texlipse 构建错误 我认为问题出在字符 ")"

编辑:

感谢所有回答:

首先我想实现这里的例子:http://de.wikibooks.org/wiki/LaTeX-W%C3%B6rterbuch:_Silbentrennung "~ : 使用此命令设置连字符,因此不能将其设置为连字符,因此,在键盘中按单词开头的示例为:(主页"~)"" 行 \hyphenation (Web-)Framework 应该防止连字符 (Web-)。示例(网络-

)Framwork 是错误的。我知道括号不是 TEX 的字母,但看看这个例子,它起作用了。所以我想知道哪里出了问题。

以下是示例:

\documentclass[
   11pt,                % Schriftgroesse 12pt
   a4paper,             % Layout fuer Din A4
   ngerman,             % deutsche Sprache, global
   oneside,            % einseitig
   headinclude,         % Kopfzeile wird Seiten-Layouts mit beruecksichtigt
   BCOR12mm,            % Korrektur fuer die Bindung
   DIV14,               % DIV-Wert fuer die Erstellung des Satzspiegels, siehe scrguide
   fleqn,               % fleqn: Glgen links (statt mittig)
   %draft,               % Keine Bilder in der Anzeige, overfull hboxes werden angezeigt
   appendixprefix,              %berschriften des Anhangs +"Anhang"
  %chapterprefix,               %berschriften der Kapitel +"KAPITEL"
   abstracton,
   pdftex                       %Ueberschrift Zusammenfassung einschalten
     ]{scrreprt}

\usepackage[german,ngerman]{babel}
\selectlanguage{german}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\hyphenation{(Web"~)""Frame"-works}  
\begin{document}
(Web-)Frameworks asdasd (Web-)Frameworks asd (Web-)Frameworks (Web-)Frameworks
(Web-)Frameworks asdsada (Web-)Frameworks asd (Web-)Frameworks (Web-)Frameworks
(Web-)Frameworks asdasdasd (Web-)Frameworks (Web-)Frameworks (Web-)Frameworks
(Web-)Frameworks asdasdas (Web-)Frameworks (Web-)Frameworks
\end{document}

答案1

在参数中\hyphenation只允许使用字母和连字符来标记可接受的断点;babel绝对不允许使用快捷方式。

解决这个问题最简单的策略是定义一个宏:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\newcommand{\WFW}{(Web\mbox{-})\nolinebreak\hspace{0pt}Framework}
\babelhyphenation[ngerman]{frame-work frame-works}

\begin{document}

\WFW{} asdasd \WFW{} asd \WFW{} \WFW{}
\WFW{} asdsada \WFW{} asd \WFW{} \WFW{}
\WFW{} asdasdasd \WFW{} \WFW{} \WFW s
\WFW s asdasdas \WFW s \WFW s

\end{document}

在此处输入图片描述

如果你不想要这个命令,你可以输入如下命令

(Web"~)""Framework

在您的文档中,由于声明\babelhyphen,连字符只会在括号后出现Frame-workFrame-works可能中断。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\babelhyphenation[ngerman]{frame-work frame-works}

\begin{document}

(Web"~)""Framework asdasd (Web"~)""Framework asd (Web"~)""Framework (Web"~)""Framework
(Web"~)""Framework asdsada (Web"~)""Framework asd (Web"~)""Framework (Web"~)""Framework
(Web"~)""Framework asdasdasd (Web"~)""Framework (Web"~)""Framework (Web"~)""Frameworks
(Web"~)""Frameworks asdasdas (Web"~)""Frameworks (Web"~)""Frameworks

\end{document}

在此处输入图片描述

您可以定义一个新的命令,如下所示

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\babelhyphenation[ngerman]{frame-work frame-works}

\shorthandon{"}
\newcommand{\WEB}{(Web"~)""}
\shorthandoff{"}

\begin{document}

(Web"~)""Framework asdasd (Web"~)""Framework asd (Web"~)""Framework (Web"~)""Framework
(Web"~)""Framework asdsada (Web"~)""Framework asd (Web"~)""Framework (Web"~)""Framework
(Web"~)""Framework asdasdasd (Web"~)""Framework (Web"~)""Framework (Web"~)""Frameworks
(Web"~)""Frameworks asdasdas (Web"~)""Frameworks (Web"~)""Frameworks

\WEB Framework asdasd \WEB Framework asd \WEB Framework \WEB Framework
\WEB Framework asdsada \WEB Framework asd \WEB Framework \WEB Framework
\WEB Framework asdasdasd \WEB Framework \WEB Framework \WEB Frameworks
\WEB Frameworks asdasdas \WEB Frameworks \WEB Frameworks

\end{document}

或者,

\shorthandon{"}
\newcommand{\WEB}[1]{(Web"~)""#1}
\shorthandoff{"}

但输入应该是\WEB{Framework}。请自行选择。

这是上述示例的输出。

在此处输入图片描述

答案2

总结

\newunicodechar{‑}{{\fontencoding{T1}\selectfont\symbol{'177}}\nolinebreak\hspace{0pt}}

然后,只需在右括号前使用 ‑ (U+2011) 代替 - (U+002D)。这意味着您现在可以写(re‑)creation(Web‑)Frameworks甚至Entwicklungs‑, Test/QS‑, Staging‑ oder Produktivsystem(是的,我让破折号逗号正常工作了)。

如果这对你不起作用,@dessert 报告说,这个和德米特里的回答作品:

\newunicodechar{‑}{\babelhyphen{nobreak}}

使用哪一个似乎取决于您使用的版本babel以及如何使用它。

背景故事

我也在寻找这个,但作为一个更通用的解决方案,到目前为止,我找到的答案都不能让我满意。我确实有德语 Babel 包,但"~只是为我排版了一个双引号,后跟一个空格(事实上,我认为我更喜欢将双引号呈现为引号字符)。

我查看了 Unicode,发现 ‑U+2011 NON-BREAKING HYPHEN似乎是我想要的。显然,Xe(La)TeX 已经支持此功能,但我们使用 pdflatex(在一个项目中直接使用,在另一个项目中通过 maven-latex-plugin 使用),因此无法使用。

但这为我指明了正确的方向:我已经知道\newunicodechar所以我想我可以让 U+2011 可用。我的第一次尝试是……

% does not work
\newunicodechar{‑}{-}

… 只是将其定义为连字符,但这样不行。所以,在阅读了这里的一些答案后,我尝试了…

% throws an error message
\newunicodechar{‑}{\nobreakdash-\hspace{0pt}}

…但\nobreakdash显然还不知道。最后,我尝试了…

% works for me, except commas
\newunicodechar{‑}{-\nolinebreak\hspace{0pt}}

…然后,我就可以排版“(Maschinen‑)Benutzernamen”了,没有难看的分隔线自动连字符将其变成“(Maschinen-)Benut-⏎zernamen”,这真是太完美了。更棒的是,从 PDF 复制/粘贴时,您会得到一个实际的 - ,这使得获取(用于 XML 注释)U+002D HYPHEN-MINUS之类的操作可以正常工作。\texttt{<!‑‑}<!--

更新 2016-09-04:逗号

但有一个问题:‑,仍然会把多余的逗号推到下一行。解释与我们在宏扩展中仍然使用 ASCII 连字符减号有关-,Teχ(无用)为其添加了一个自由裁量断点。但是,如果当前字体具有 T1 编码(而不仅仅是 OT1 或 LY1),则可以解决这个问题,方法是暂时切换到当前字体的 T1 编码变体并输出命名字符 127(0x7F),这与标准 \hyphenchar 45(0x2D)完全相同。

% works for me
\newunicodechar{‑}{{\fontencoding{T1}\selectfont\symbol{'177}}\nolinebreak\hspace{0pt}}

对于我使用的(自定义 TrueType)字体,这需要一些黑客行为由于ttf2tfm 错误;如果您只是想确保字体的 T1 编码在正确的位置具有正确的字形,请使用以下命令(并替换museo为您的字体名称):

\documentclass{article}
\usepackage{fonttable}
\usepackage[T1]{fontenc}

\begin{document}
\thispagestyle{empty}
\pagestyle{empty}
\xfonttable{T1}{museo}{m}{n}
\end{document}

(注:我把我对几个问题的回答合并在这个答案然后将其复制到这些其他问题中,所以不要奇怪它是否出现在三个地方。)

答案3

\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{xspace}

\shorthandon{"}
\newcommand\WFW{(Web"~)""Frameworks\xspace}
\hyphenation{Frame-works}% to prevent Fra-me-works
\begin{document}
\noindent
    \WFW asdsad \WFW asssda \WFW \WFW
    \WFW asdsada \WFW asd \WFW \WFW
    \WFW asdasdasd \WFW sss \WFW fff \WFW
    \WFW asdasdas \WFW \WFW
\end{document}

相关内容