文本超出边距

文本超出边距

我不知道为什么,但是我的文本中有一行超出了边距。

图像

我该如何避免这个问题?

我在 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因为有两个共同的因素:

  1. 该单词present不能自动连字符,因为当它是动词或名词时,它的音节会改变(就像record);

  2. 英语的右连字符最小值设置为 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的选项加载的englishamerican以及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

相关内容