这是我的 MWE:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[draw=red,very thin, align=left,every node/.style={draw,rectangle}]
\node (unaligned) {
\ttfamily
parameters: a\\
\phantom{parameters:} b};
\node[node font=\ttfamily, right=of unaligned] {
parameters: a\\
\phantom{parameters:} b};
\end{tikzpicture}
\end{document}
区别很明显,a 和 b 在第一个节点中没有对齐。显然,\phantom{...}
不是使用 排版的\ttfamily
,因此它的大小不同。我可以使用 咒语font=\ttfamily
,效果与 一样好node font=\ttfamily
。
PGF 手册只是稍微模糊地提到了这一点:
当然,您可以在节点开头使用 \small 或 \rm 等字体命令。但是,以下两个选项可以更轻松地设置节点中使用的字体。
和
关键字 node 后面通常跟着一些选项,然后是花括号中的文本。此文本放在普通的 TEX 框内(如果节点规范直接跟在坐标后面,通常情况如此,TikZ 能够施展一些魔法,甚至可以在框内使用逐字文本)
显然我不能“只使用字体命令”。为什么?这与前面提到的“魔法”有什么联系吗?另外,什么是“普通的 TeX 框”?我知道\parbox
,\mbox
和\minipage
,它们在缩进和类似方面的行为都略有不同。
答案1
这是因为如果你省略text width
Ti钾\\
Z 会尝试通过分割行并将其打包成 来计算文本宽度\halign
。这也记录在/tikz/align
在 PGF 手册中。
本质上这两者是等价的:
\documentclass{article}
\pagestyle{empty}
\usepackage{tikz}
\begin{document}
\noindent \tikz \node[align=left,inner sep=0pt] {
\ttfamily parameters: a\\
\phantom{parameters:} b
};
\noindent \halign{#\hfil\cr
\hbox{\ttfamily parameters: a}\cr
\hbox{\phantom{parameters:} b}\cr
}
\end{document}