![禁止带连字符的单词进入章节标题的边距](https://linux22.com/image/236783/%E7%A6%81%E6%AD%A2%E5%B8%A6%E8%BF%9E%E5%AD%97%E7%AC%A6%E7%9A%84%E5%8D%95%E8%AF%8D%E8%BF%9B%E5%85%A5%E7%AB%A0%E8%8A%82%E6%A0%87%E9%A2%98%E7%9A%84%E8%BE%B9%E8%B7%9D.png)
我有一个很长的章节标题,最后一个单词将在末尾用连字符连接,并进入页边距。
最小工作示例:
\documentclass{article}
\usepackage[english]{babel}
\usepackage{blindtext}
\begin{document}
\subsection{longlonglong wordswordswordwords that will cause problem}
\blindtext
\end{document}
生成:
我不希望问题被连字符连接,而是希望它在最后一个单词之前断行。我尝试了三种方法:
手动添加
\\
。这会产生所需的输出,但它很脏且不好:pdf 书签无法识别\\
,标题可能适合目录但它只是中断了,我可能想要切换到双列或其他文档类。我尝试过以下解决方案这个问题也就是说,使用包
nohyphens
提供的hyphenat
,但事情变得更糟:
使用连字符惩罚:
\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}