如何避免标题中的错误连字符?

如何避免标题中的错误连字符?

我遇到了一个问题,我正在写一篇(很长的)文档。现在我在检查文档错误时发现一些标题的格式非常糟糕:

标题很长,因此必须将其断开。目前,我在标题结束前几个字母处得到了连字符。因此它看起来像:

Chapter 2: Fooooooo baaaaaaar fooooooo baaa-
                                          ar

当然这不是我想要的。我希望baaaar第二行是完整的。目前我无法在最小示例中重现该问题,我将在今晚回家后尝试。

另一个问题是 LaTeX 有时会在标题的错误位置断字。在普通文本中,我给出一个减号来纠正连字符的位置,但在标题中,这不起作用,因为在标题中(使用fancyhdr或类似的页面样式)也会出现减号。

我认为,全面停用连字符不是一个好主意。我(必须)在 A5 纸上工作,因此很容易用几个单词得到完整的一行。所以我认为,为了使文档看起来美观,需要使用连字符。

综上所述:

  • 如何去除标题中的孤立项?
  • 如何正确设置标题中连字符的位置?

答案1

如果您正在寻找手动解决方案,那么您可以使用它\-来明确指示连字符的位置。

警告:您绝不应该仅使用明确的减号,因为任何文本更改都会使其无效,即使在普通文本中也是如此!

您还可以使用\mbox{word}来防止单词被完全断开。最后,您可能希望使用\\来明确断开一行(而不将其展开)或\linebreak保持行宽。

但是标题文本也会进入目录,也可能进入运行页眉。因此,您要么需要确保您的修改在两个地方都是正确的(例如,\-不会造成任何损害,但\\可能会在那些地方造成损害),要么您需要使用标题命令的可选参数来区分这两种用途,例如,

\section[Fooooo baaaaaaar foooooo baaaaar]
        {Fooooo baaaaaaar foooooo\\ baaaaar}

对于更通用的解决方案,可以禁用标题命令定义中的连字符(并确保其排版正确),但这需要在类或包文件中完成,并且取决于这些命令的基本定义。

更新

有人在评论中询问如何表示只应在目录中发生、而不应在主标题或运行页眉中发生的换行符。

不幸的是,这有点棘手,因为在标准类中,部分命令的接口不为进入目录和运行标题的材料提供不同的参数。这确实是 2e 的缺陷。

因此,您可以做的是定义一个命令,比如\TOCnewline在正文中给出一个定义,这样它在排版时除了产生一个空格外什么也不做,但在写入文件时.toc会保留而不发生任何变化。我们可以通过使其成为一个“健壮”的命令(不会在 中展开\write)来做到这一点:

\DeclareRobustCommand\TOCnewline[1][]{\unskip\space\ignorespaces}

此定义接受一个可选参数,但会忽略它。它会产生一个空格,并删除前后各一个空格。在 TOC 处理期间,我们为其赋予了不同的定义:简单地说\\。因此,如果我们将所有内容放在一起,整个内容看起来如下所示:

\documentclass{article}

\pagestyle{headings}

\begin{document}

\newcommand\TOCnewline[1][0pt]{\\[#1]}
\tableofcontents
\DeclareRobustCommand\TOCnewline[1][]{\unskip\space\ignorespaces}

\newpage % to see a running header other than "CONTENTS"

\section{A test with\TOCnewline three lines
              \TOCnewline[10pt] and here with extra space}

some text

\end{document}

不是很优雅,但是可以做到 :-) ...但显然在 LaTeX3 中可以做得更好。

这是第 1 页的输出:

在此处输入图片描述

... 和 2:

在此处输入图片描述

警告:直接使用\\不会出现错误消息,但它会产生错误的间距,因为它会产生断线惩罚(通常在运行标题中被忽略)并且\hfil不会忽略。如果该类支持多行运行标题,那么它也会在运行标题中产生断线。

答案2

\hyphenation您可以使用序言中的命令指定连字符。

答案3

在你的标题中你需要给出\raggedright它会自动分解这个词:

\newcommand\section{\@startsection {section}{1}{\z@}%
                                   {-3.5ex \@plus -1ex \@minus -.2ex}%
                                   {2.3ex \@plus.2ex}%
                                   {\normalfont\Large\bfseries\raggedright}}

答案4

我发现\\并且适当(通过眼睛)\hspace{}很有用。

相关内容