我不知道为什么,但是我的文本中有一行超出了边距。
我该如何避免这个问题?
我在 TeXworks 中使用classicthesis
。
编辑:使用命令
\overfullrule=5pt
我可以看到出现此问题的地方有一个黑色方块。
这里平均能量损失和myclassicthesis-preamble
\documentclass{scrreprt}
\usepackage[english]{babel}
\usepackage{myclassicthesis-preamble}
\usepackage{classicthesis}
\usepackage{microtype}
\renewcommand{\descriptionlabel}[1]{\hspace*{\labelsep}\small\textsc{#1}}
\overfullrule=5pt
\begin{document}
\begin{description}
\item[Service Delivery Framework] The infrastructure to create, publish, manage and consume FI services across their life cycle, addressing all technical and business aspects.
\item[Interface to the Network and Devices] The open interfaces to networks and devices, harmonizing the connectivity needs of services built on top of the platform.
\end{description}
Lastly, on the \emph{political dimension}, legal and legislative barriers presently hinder the efficient cross-border establishment of new innovative solutions due to complex or incompatible ICT policies in Europe.
\end{document}
两个可能的问题:这一行
\renewcommand{\descriptionlabel}[1]{\hspace*{\labelsep}\small\textsc{#1}}
myclassicthesis-preamble
以及(第 63-70 行)中的修改
\PassOptionsToPackage{
eulerchapternumbers,
beramono,
eulermath,
pdfspacing,
floatperchapter
}
{classicthesis}
特别是选项pdfspacing
。
答案1
TeX 不使用连字符,presently
因为有两个共同的因素:
该单词
present
不能自动连字符,因为当它是动词或名词时,它的音节会改变(就像record
);英语的右连字符最小值设置为 3,也就是说,TeX 不允许在新行上留下少于三个带连字符的单词的字符。
如果我们设置\righthyphenmin=2
,则\showhyphens{presently}
结果present-ly
与预期一致。ushyphenmax
通过加载连词不会将 连字符化presently
,原因与 相同\righthyphenmin=3
。序言中的说法\hyphenation{pres-ent-ly}
允许将 连字符化为pres-ently
(但不允许present-ly
,因为 太少了两个字母)。
在紧急情况下,可以通过键入来允许连字符present\-ly
,这将覆盖默认的最小值。
格式由经典论文非常严格,您的文本显示了长描述标签可能出现的问题。除了修改文本(如果可能)外,没有太多可以做的事情。我会\sloppy
尽可能避免,因为它会导致段落间距很大。
更好的策略是使用\emergencystretch
:并进行以下修改
\begingroup\emergencystretch=.3em
\begin{description}
\item[Service Delivery Framework] The infrastructure to create, publish, manage and consume
FI services across their life cycle, addressing all technical and business aspects.
\item[Interface to the Network and Devices] The open interfaces to networks and devices,
harmonizing the connectivity needs of services built on top of the platform.
\end{description}
\endgroup
Lastly, on the \emph{political dimension}, legal and legislative barriers present\-ly hinder
the efficient cross-border establishment of new innovative solutions due to complex or
incompatible ICT policies in Europe.
文本排版不会出现任何过满的框和过大的间距。
还应注意微型 是自动加载经典论文(第 219 行classicthesis.sty
)\RequirePackage{microtype
。
答案2
编辑:似乎您的文档中有一些特别不走运的地方,只有 a\sloppy
会有所帮助。尽管如此,以下信息可能有助于更好地理解连字并减少这些地方。请注意以下仅适用于美式连字模式,这是 (La)TeX 默认加载的,也是由babel
的选项加载的english
,american
以及usenglish
,它们是全部都一样。
正如之前提到的,TeX 不知道如何连字符目前。这可以通过编译包含 ; 的文档来看到\showhyphens{presently}
,随后,连字符点目前将被放入 .log 文件中——结果发现,没有。正如 @percusse 指出的那样,添加\hyphenation{pre-sent-ly}
到您的序言中将解决该词的问题,但您指出还有更多。所以您可以做以下事情:
加载最新的连字模式
插入
\RequirePackage[english=usenglishmax]{hyphsubst}
甚至前您\documentclass{...}
需要加载更新的连字符模式\usepackage[english]{babel}
(美国模式)。
手动添加已知的连字例外情况
这断字异常日志(2010 年 11 月)是“TeX 无法正确连字的单词列表的定期更新”(同上,第 1001 页)。在第 1005 页上,它确认 TeX 不知道如何连字目前,并列出所需的连字pres-ent-ly
。
以下是有关如何使用连字符例外列表的相关段落:
将此列表转换为机器可用的连字例外
Werner Lemberg 编写了一个脚本,可以将这篇文章转换成一个真正的
\hyphenation
块,可以直接或通过输入文件将其合并到文档中。他的工作需要对用于格式化列表的宏进行一些更改,但列表的外观不会改变。许多变位形式将自动包含在内,有些在打印版本中很明显,但许多都是默认包含的。脚本hyphenex.sh
是一个简单的 shell 脚本,发布在 CTAN 上,tex-archive/info/digests/tugboat/hyphenex/
脚本的输出发布在与 相同的区域ushyphex.tex
。
(同上,第 1001 页)
除此之外,我赞同彼得的建议,使用该microtype
软件包,它可以全面改善连字效果,并使您的文档具有更均匀的灰度系数。
答案3
没有平均能量损失很难确切知道。
发生这种情况的常见原因是 TeX 无法满足Overfull \hbox
消息中规定的所有间距规则。解决此问题的一种方法是添加\sloppy
放宽单词间距规则。请参阅为什么文本超出了指定的线宽?以获得更详细的解释。
或者你可以添加\usepackage{microtype}
到序言中。请参阅microtype 包文档 更多细节。
答案4
也许 LaTeX 不知道如何用连字符连接“presently”?在这种情况下,你可以直接写成 来告诉它如何操作pres\-ent\-ly
。