TikZ 中使用 `text width` 和 `\fontsize` 导致的单词间距错误

TikZ 中使用 `text width` 和 `\fontsize` 导致的单词间距错误
\documentclass{article}
\usepackage{fontspec}
\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}
        \node[text width=20em]{This is};
    \end{tikzpicture}

    \begin{tikzpicture}
        \node[text width=20em]{\fontsize{30}{40}\selectfont This is};
    \end{tikzpicture}

    \begin{tikzpicture}
        \node[text width=20em]{\fontsize{60}{70}\selectfont This is};
    \end{tikzpicture}

    \begin{tikzpicture}
        \node{\fontsize{60}{70}\selectfont This is};
    \end{tikzpicture}

    \begin{tikzpicture}
        \node{\fontsize{60}{70}\selectfont\spaceskip 0pt This is};
    \end{tikzpicture}

    \begin{tikzpicture}
        \node[text width=20em,text badly ragged]{\fontsize{60}{70}\selectfont This is};
    \end{tikzpicture}
\end{document}

生产

上述代码的结果

因此我们看到,当使用时text width,设置\fontsize不会按应有的方式改变间距,可能是因为埃格尔描述于TikZ 节点中的打字机。他建议的修复确实有效,但有点麻烦。有没有更简单的方法来获得正确的间距?是否应该提交错误?

答案1

TikZ 必须以不同的方式处理框(或在这种情况下使用文本大小或对齐键的迷你页面)的大小,以便为绘图目的分配足够的空间。因此,在将节点内容放入由 TeX 排版处理的节点区域之前,需要进行一些准备步骤。因此,TikZ 提供了一些灵活性,可以通过font键注入文本字体修改。

正如 egreg 在链接问题中指出的那样,它并不能解决所有问题,而且涉及某些选择,但通常对于这样的事情来说它已经足够了。这里的问题是 TikZ 为某些字体状态做好了准备,但在节点内容中,字体信息被更改,因此产生了一些奇怪的现象。它需要更好的手术,但我不太确定我是否能公正地对待所做的选择。

幸运的是,字体大小命令被字体键考虑在内,因此被注入到正确的位置,因此可以进行以下工作:

\begin{tikzpicture}
    \node[text width=20em,font=\fontsize{30}{40}\selectfont ]{This is};
\end{tikzpicture}

相关内容