TikZ 节点内容中的文本如何缩进和粘贴?

TikZ 节点内容中的文本如何缩进和粘贴?

这是我的 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 widthTi\\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}

在此处输入图片描述

相关内容