![包含 ragged2e 会导致 Tikz 出现间距副作用](https://linux22.com/image/321029/%E5%8C%85%E5%90%AB%20ragged2e%20%E4%BC%9A%E5%AF%BC%E8%87%B4%20Tikz%20%E5%87%BA%E7%8E%B0%E9%97%B4%E8%B7%9D%E5%89%AF%E4%BD%9C%E7%94%A8.png)
我正在研究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}