防止对特定单词进行全局连字

防止对特定单词进行全局连字

我知道这是一个常见的问题。

我想阻止 LaTeX 拆分单词“Byte”。

我已经搜索过该问题并找到了解决方案\hyphenation

我以为\hyphenation{Byte}这能解决我的问题。但不幸的是,它不起作用。我认为这与他可能只是将其用于“byte”而不是包含它的单词有关(德语示例:“Bytestrom”,LaTeX 将其拆分为 By-testrom)。

我发现的第二个解决方案是\mbox使用\newcommand我不太喜欢这个解决方案。

我的问题是:

  • 为什么\hyphenation{byte}不工作?
  • 还有其他方法可以解决我的问题吗?

Jake 添加的示例:

\documentclass[a5paper]{article}
\usepackage[german]{babel}
\begin{document}
Trying to determine how a special word is hyphenated: Bytestrom.
\end{document}

答案1

引用电子书,第 452 页:

\hyphenation{man-u-script man-u-scripts ap-pen-dix}

[...] 告诉 TeX 如何将单词 'manuscript' 、 'manuscripts' 和 'appendix' 连字符连接起来。请注意,输入了 'manuscript' 的单数和复数形式,因为只有当单词与例外条目完全一致时,例外词典才会影响连字符连接。

换句话说,你的问题的答案是将和都输入ByteByte-strom例外列表中。

\documentclass[a5paper]{article}
\usepackage[german]{babel}
\hyphenation{Byte Byte-strom}
\begin{document}
Trying to determine how a special word is hyphenated: Bytestrom.
\end{document}

在此处输入图片描述

答案2

有一种方法可以解决这个问题,但不适合胆小的人。\hyphenation旨在对全局规则进行细微更正,针对特定词语。但是,您想更改全局规则,而您\patterns不需要\hyphenation

\patterns只能在创建格式时在 initex 时使用,并读取类似于的模式列表

% dehyphn-x-2012-05-30.pat

\message{German Hyphenation Patterns (Reformed Orthography, 2006) `dehyphn-x' 2012-05-30 (WL)}

% TeX-Trennmuster für die reformierte (2006) deutsche Rechtschreibung
%
%
% Copyright (C) 2007, 2008, 2009, 2011, 2012 Werner Lemberg <[email protected]>
%
% This program can be redistributed and/or modified under the terms
% of the LaTeX Project Public License Distributed from CTAN
% archives in directory macros/latex/base/lppl.txt; either
% version 1 of the License, or any later version.
%
%
% The word list is available from
%
%   http://repo.or.cz/w/wortliste.git?a=commit;h=7915938d035684993f8c363729f963eec71c85b1
%
% The used patgen parameters are
%
%   1 1 | 2 5 | 1 1 1
%   2 2 | 2 5 | 1 2 1
%   3 3 | 2 6 | 1 1 1
%   4 4 | 2 6 | 1 4 1
%   5 5 | 2 7 | 1 1 1
%   6 6 | 2 7 | 1 6 1
%   7 7 | 2 13 | 1 4 1
%   8 8 | 2 13 | 1 8 1

\patterns{%
.ab1a
.abi4
.ab3l
.abo2
.ab3ol
.ab1or
.ack2
.ag4n
.ag4r
...

你可能猜到这些东西通常是机械构造的(传统上是使用程序patgen

TeXBook 说

...因为模式应该由专家来准备,而专家们凭借其专业知识获得丰厚的报酬....

但是,如果你想要更改以 byte 开头的单词的连字符,那么如果你按照 LPPL 的要求更改文件的名称,你可能需要添加以下形式的模式

.b4y4t4e

其中.表示单词的开头,字母之间的数字表示鼓励(奇数)连字或不鼓励(偶数)连字。

注意,我还没有测试过这个,而且我这个千年来也没有真正使用过这个\pattern命令。但像这样的东西可能会起作用。

答案3

\hyphenation{Byte-strom}


按预期工作。\hyphenation{Byte}仅指单个字字节,您可以尝试类似设置

\AtBeginDocument{\lefthyphenmin=3}

在序言中。

答案4

一些评论。

  • 德语中正确的左连字符和右连字符最小值为 2。\lefthyphenmin但是,设置为 3 是个好主意,除非在非常小的列中排版。虽然某些前缀(如 »ab« 和 »zu«)确实会被跳过,但通常可以改善整体布局。

  • 如果使用 1996 年后的连字规则的实验性德语连字模式,则 »Bytestrom« 会正确地连字为 »Byte-strom«:

    \RequirePackage[ngerman=ngerman-x-latest]{hyphsubst}
    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage[ngerman]{babel}
    
    \begin{document}
    \showhyphens{Bytestrom}
    \end{document}
    

    您可以在文档中找到更多详细信息dehyph-exptl包裹。

  • 1996 年之前的规则的实验模式根本不使用连字符连接 »Bytestrom«,这是不正确的,但比原始模式要好。原因是单词列表中缺少这个词。

  • »wortliste« 项目附带 Makefile,可简化新德语连字模式的创建。我邀请所有人参与并改进它们!

相关内容