\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}