禁止带连字符的单词进入章节标题的边距

禁止带连字符的单词进入章节标题的边距

我有一个很长的章节标题,最后一个单词将在末尾用连字符连接,并进入页边距。

最小工作示例:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{blindtext}
\begin{document}
\subsection{longlonglong wordswordswordwords that will cause problem}
\blindtext
\end{document}

生成:

MWE 输出

我不希望问题被连字符连接,而是希望它在最后一个单词之前断行。我尝试了三种方法:

  1. 手动添加\\。这会产生所需的输出,但它很脏且不好:pdf 书签无法识别\\,标题可能适合目录但它只是中断了,我可能想要切换到双列或其他文档类。

  2. 我尝试过以下解决方案这个问题也就是说,使用包nohyphens提供的hyphenat,但事情变得更糟:

无连字符示例

  1. 使用连字符惩罚:

    \subsection{
    \begingroup
    \hyphenpenalty 10000
    \exhyphenpenalty 10000
    longlonglong wordswordswordwords that will cause problem
    \endgroup
    }
    

结果:

连字符惩罚示例

是的,它在最后一个词处中断,但第一行变成右对齐.我希望他们左对齐(并且它应该如此)。

希望有人能告诉我一些解决方法。提前谢谢!

答案1

\documentclass{article}
\usepackage[english]{babel}
\usepackage{blindtext}
\begin{document}
\subsection{\sloppy longlonglong wordswordswordwords that will cause problem}
\blindtext
\end{document}

在此处输入图片描述

答案2

在我看来(美国数学学会也同意,正如其文档类中所展示的),“独立”标题不应该是两端对齐的,而应该是右对齐的。对基本文章部分命令的重新定义只\raggedright 在末尾添加。基本 latex 定义\raggedright抑制连字符,并省略将连续行拉伸到整个文本宽度。这只对部分标题本身起作用,并不影响目录(尽管也可以在那里对“受控”的右对齐提出争论(即,以不影响页码定位的方式完成)。

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

答案3

您可以使用\linebreak命令强制换行,并\mbox防止有问题的单词被连字符连接;然后可以使用分段命令的可选参数来防止目录中、使用标题的可能标题中以及书签中出现问题:

\documentclass{article}
\usepackage[english]{babel}
\usepackage{hyperref}
\usepackage{blindtext}
\begin{document}
\subsection[longlonglong wordswordswordwords that will cause problem]{longlonglong wordswordswordwords that will cause\linebreak \mbox{problem}}
\blindtext
\end{document}

相关内容