我的文档中有几个章节标题带有连字符,这很难看。
我现在正在寻找某种方法来避免连字符,这与这个问题,但不幸的是我的标题必须居中(所以raggedright
不是一个选项),并且添加\sloppy
到我的titlesec
小节格式的定义并没有帮助:
\newcommand{\trailthesubsection}[1]{\MakeUppercase{#1} (\thesubsection)}
\titleformat{\subsection}
{\normalfont\fontsize{15pt}{16pt}\bfseries\sffamily\sloppy} % <- "sloppy" didn't help.
{}
{0pt}
{\filcenter\trailthesubsection}
我可以当然,设置手动换行符 - 但为了不是为了在此过程中破坏我的目录布局,我必须对部分命令使用可选参数:
\subsection[Could do this but it is not nice]{Could do this\\ but it is not nice}
是否有某种方法可以抑制给定文本的连字符(例如通过中的某些命令\titleformat
),或者抑制目录中手动设置的换行符?
答案1
看这个问题在 TeX FAQ 中讨论了关闭连字的四种不同方法。方法三和方法四包括添加指令
\righthyphenmin62 %% or whatever's large enough ...
和
\hyphenchar\font=-1
后一种方法用于以下 MWE:
\documentclass{article}
\usepackage{titlesec}
\titleformat*{\section}{\sloppy\bfseries\Large\hyphenchar\font=-1}
\begin{document}
\section{Supercalifragilisticexpialidocious
Supercalifragilisticexpialidocious
Supercalifragilisticexpialidocious Supercalifragilisticexpialidocious
Supercalifragilisticexpialidocious Supercalifragilisticexpialidocious
Supercalifragilisticexpialidocious Supercalifragilisticexpialidocious }
\ldots with apologies to Julie Andrews.
\end{document}
请注意,该\sloppy
命令将阻止 TeX 在章节标题中创建(严重的!)过满的行。
笔记(感谢 egreg):该\hyphenchar\font-1
指令是全局的,因此全部 文档中的其他文本\bfseries\Large
也会被抑制连字符——这可能是(也可能不是)想要的。因此,\righthyphenmin62
使用这种方法可能稍微安全一些(双关语)。但是,根据前面提到的 TeX FAQ 的答案,如果您是用户,则babel
重置 \left- 和/或 \righthyphenmin 宏的方法将不起作用,因为babel
会在内部重置它们。
附录:为了防止在可选的缩短章节标题(显示在目录中)中使用连字符,必须插入说明
\protect{\hyphenchar\font=-1}\protect\sloppy
在命令的可选参数中,在材料的开头\section
。(我的感觉是,如果某个部分的标题超过一行,那么提供一个缩短的标题可能是明智的,这个标题要足够短,根本不需要换行。)
答案2
工作方式之一是
\newif\ifintoc
\DeclareRobustCommand{\titlebreak}{%
\ifintoc
\unskip\space
\else
\newline
\fi}
然后通过
\begingroup\intoctrue
\tableofcontents
\endgroup
并且您的标题可以输入为
\subsection{Could do this\titlebreak but it is not nice}
也可以注入\intoctrue
代码\tableofcontents
。
LaTeX 会\titlebreak
在.toc
文件中写入,但当读入这个文件时,\titlebreak
它将意味着“保留一个正常空格”。在文档的正常处理过程中,它将意味着“在此处换行”。这\unskip\space
是为了防止在
\subsection{Could do this \titlebreak but it is not nice}
或没有空格
\subsection{Could do this\titlebreak but it is not nice}