使用 tikz 和 titlesec 避免章节标题中的连字符

使用 tikz 和 titlesec 避免章节标题中的连字符

[这个问题类似于这里的一个但那里给出的解决方案在我的环境下不起作用]

在一本(相当复杂的)书中,我使用titlesectikz制作精美的章节标题,基本上使用以下代码

\titleformat{\chapter}[display]
{\normalfont\huge\bfseries\sffamily}{\scalebox{3}{\thechapter}}{25pt}{\Huge\chaptitle}
%                        left before after
\titlespacing*{\chapter} {0pt}{110pt}{20pt}
% set the style of the chapter title as a tikzpicture, 
% filled using the current partcol2 color
\newcommand{\chaptitle}[1]{%
\begin{tikzpicture}
  \node[fill=gray!20,inner sep=6pt,text width=\dimexpr\linewidth-12pt\relax] {#1};
\end{tikzpicture}
}

然而,在几个章节中,章节标题被连字符连接起来,就像这张图片一样

在此处输入图片描述

我尝试制作一个简单的 MWE 来演示这一点,但由于某种原因,在这个简单的例子中,它没有用连字符连接单词“Table”。 (这krantz.cls是我的发布者用来设置页面尺寸的。)FWIW,这里是:

%\documentclass[10pt]{book}
\documentclass[10pt,krantz2]{krantz}

\usepackage{titlesec}
\usepackage{blindtext}
\usepackage[cmyk]{xcolor}     %% extended color models; load before tikz
\usepackage{tikz}             %% used for hyp3way.tex and chapter vtocs

\titleformat{\chapter}[display]
{\normalfont\huge\bfseries\sffamily}{\scalebox{3}{\thechapter}}{25pt}{\Huge\chaptitle}
%                        left before after
\titlespacing*{\chapter} {0pt}{110pt}{20pt}

\newsavebox{\chaptocbox}

% set the style of the chapter title as a tikzpicture, 
% filled using the current partcol2 color
\newcommand{\chaptitle}[1]{%
\begin{tikzpicture}
  \node[fill=gray!20,inner sep=6pt,text width=\dimexpr\linewidth-12pt\relax] {#1};
\end{tikzpicture}
}

\begin{document}

\chapter[Mosaic Displays for n-way Tables]{Mosaic Displays for n-way Tables}\label{ch:mosaic}
\blindtext
\end{document}

由此得出: 在此处输入图片描述 一个建议的解决方案是手动拆分标题,例如,

\chapter[Mosaic Displays for n-way Tables]{Mosaic Displays for n-way\\ Tables}\label{ch:mosaic}

这确实达到了预期的效果,但是,它搞砸了后续页面页眉中章节标题的使用。

因此,我正在寻找某种方法来修改\titleformat\chaptitle命令以表示不连字符。我确实尝试添加\sloppy命令\titleformat

答案1

由于您使用tikz节点作为章节标题,因此您可以使用tikz方法使该节点内的文本右侧不平整。这可以通过添加 font=\raggedright以下选项来实现node

\node[fill=gray!20,inner sep=6pt,text width=\dimexpr\linewidth-12pt\relax,font=\raggedright] {#1};

因此定义变成:

\newcommand{\chaptitle}[1]{%
\begin{tikzpicture}
  \node[fill=gray!20,inner sep=6pt,text width=\dimexpr\linewidth-12pt\relax,font=\raggedright,] {#1};
\end{tikzpicture}
}

相关内容