我知道这是一个常见的问题。
我想阻止 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' 的单数和复数形式,因为只有当单词与例外条目完全一致时,例外词典才会影响连字符连接。
换句话说,你的问题的答案是将和都输入Byte
到Byte-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,可简化新德语连字模式的创建。我邀请所有人参与并改进它们!