包含 ragged2e 会导致 Tikz 出现间距副作用

包含 ragged2e 会导致 Tikz 出现间距副作用

我正在研究memoir文档,其章节标题使用 Tikz 样式。我的实际图形要复杂得多,但为了简单起见,这个问题中的 MWE 将仅由一条对角红线(跨越整个\textwidth)和右对齐的章节名称组成。

在本文档中,我还必须使用ragged2e包裹(以便在表格中实现带连字符的右对齐)。包括但是,通过 这个包\usepackage似乎有改变 Tikz 图形间距的副作用。

首先,MWE 运行没有任何问题:

\documentclass{memoir}

\usepackage{tikz}
\usetikzlibrary{calc}

\renewcommand{\chaptermark}[1]{\markboth{\thechapter~#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection~#1}}
\pagestyle{plain}

\renewcommand{\chapterheadstart}{}
\renewcommand{\printchaptername}{}
\renewcommand{\chapternamenum}{}
\renewcommand{\printchapternum}{}
\renewcommand{\afterchapternum}{}
\renewcommand{\printchaptertitle}[1]{\sffamily\Huge\begin{tikzpicture}
  \clip (0,-.1) rectangle (\textwidth,1.1\baselineskip);

  \draw[solid, draw=red] (0,0) -- (\textwidth,\baselineskip);

  \node[align=right, anchor=center, text width=\textwidth] (headline) at ($(0,0)!0.5!(\textwidth,\baselineskip)$) {\thechapter~\textbf{#1}};
\end{tikzpicture}}

\begin{document}

\chapter{A chapter with spaces}

abc

\end{document}

在编写本文档时,章节标题应如下所示:

正确间距的章节标题

现在,MWE 的唯一变化是包括ragged2e

\documentclass{memoir}

\usepackage{tikz}
\usetikzlibrary{calc}

\renewcommand{\chaptermark}[1]{\markboth{\thechapter~#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection~#1}}
\pagestyle{plain}

\renewcommand{\chapterheadstart}{}
\renewcommand{\printchaptername}{}
\renewcommand{\chapternamenum}{}
\renewcommand{\printchapternum}{}
\renewcommand{\afterchapternum}{}
\renewcommand{\printchaptertitle}[1]{\sffamily\Huge\begin{tikzpicture}
  \clip (0,-.1) rectangle (\textwidth,1.1\baselineskip);

  \draw[solid, draw=red] (0,0) -- (\textwidth,\baselineskip);

  \node[align=right, anchor=center, text width=\textwidth] (headline) at ($(0,0)!0.5!(\textwidth,\baselineskip)$) {\thechapter~\textbf{#1}};
\end{tikzpicture}}

\usepackage{ragged2e}

\begin{document}

\chapter{A chapter with spaces}

abc

\end{document}

现在编译产生章节标题如下:

章节标题每个单词之间都有过大的空白

显然,章节名称中每个单词之间的空格突然变大了。有趣的是,章节号和章节名称第一个单词之间的空格不是会增长,即使~被 替换

我怎样才能防止出现这种多余的空白?

请不要提出涉及更改 Tikz 代码的建议。如上所述,在实际文档中,这是一个经过精心布局的相当复杂的图形。我只是想ragged2e通过导入包来使用而不会产生任何副作用。

奇怪的是,我的实际的我的问题实际的文档略有不同:其中,章节标题和页面标题均使用 Tikz 进行样式设置。章节标题显示正常,但章节名称页面标题(即\leftmark)一旦ragged2e包含,就会出现这些过大的空格。我无法为 MWE 重现此问题,而是设法生成一个在章节标题中显示等效问题的 MWE。由于这个问题似乎与我实际文档中的问题非常相似,我希望这个问题的解决方案也将有助于解决实际问题。

答案1

使用tikz在节点内部更改字体属性的方法,即,而不是在选项中\textbf{#1}使用font=\bfseries。这也会使数字变粗。在那里你可以使用\normalfont

\node[align=right,  text width=\textwidth,font=\bfseries] (headline) at ($(0,0)!0.5!(\textwidth,\baselineskip)$) {{\normalfont\thechapter}~#1};

anchor=center是多余的所以我将其删除了。

\documentclass{memoir}

\usepackage{tikz}
\usetikzlibrary{calc}

\renewcommand{\chaptermark}[1]{\markboth{\thechapter~#1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection~#1}}
\pagestyle{plain}

\renewcommand{\chapterheadstart}{}
\renewcommand{\printchaptername}{}
\renewcommand{\chapternamenum}{}
\renewcommand{\printchapternum}{}
\renewcommand{\afterchapternum}{}
\renewcommand{\printchaptertitle}[1]{\sffamily\Huge\begin{tikzpicture}
  \clip (0,-.1) rectangle (\textwidth,1.1\baselineskip);

  \draw[solid, draw=red] (0,0) -- (\textwidth,\baselineskip);

  \node[align=right,  text width=\textwidth,font=\bfseries] (headline) at ($(0,0)!0.5!(\textwidth,\baselineskip)$) {{\normalfont\thechapter}~#1};

\end{tikzpicture}}

\usepackage{ragged2e}

\begin{document}

\chapter{A chapter with spaces}

abc

\end{document}

相关内容