TikZ 中的左对齐

TikZ 中的左对齐

我无法将文本左对齐。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\newcommand{\altura}{.45cm}
\begin{document}

\begin{tikzpicture}[x=1cm, y=-\altura, node distance=0,outer sep=0,inner sep=0]
\tikzstyle{nome}=[draw, rectangle,anchor=west, minimum height=\altura,minimum width=9cm,fill=yellow!30]

\node[nome,right] (p1) {text};
\node[nome,right] (p2) [below = of p1] {text text};
\node[nome,right] (p3) [below  = of p2] {text text text};

\end{tikzpicture}
\end{document}

左对齐anchor=west不行。我需要文本左对齐。

答案1

您可以添加一个指定文本宽度的选项。然后它会自动左对齐:

\tikzstyle{nome}=[draw, rectangle,anchor=west, minimum height=\altura,
  minimum width=9cm,fill=yellow!30,text width=8.8cm]

节点中的左对齐文本

答案2

我只想补充一点解释,说明为什么会发生观察到的行为,以及为什么已经给出的解决方案(来自 Stefan 和 Gonzalo)是正确的做法。

需要关注的部分是当您将选项minimum size(或高度或宽度)传递给 Tikz 时会发生什么。它所做的如下(或者至少,以下内容相当于它所做的):它首先按照指定的方式构造节点,但没有minimum size。然后,它测量节点的相关大小并将其与指定的最小值进行比较。如果节点较小,则将其放大到最小尺寸。要意识到的关键是它通过以下方式实现此目的增加填充。也就是说,它增加了节点内容和形状之间的边框。因此节点内容(文本)别看尺寸增加。就文本而言,它仍然在与之前相同的框中(刚好足够容纳它)。由于填充在需要的地方均匀增加,因此净效果是将文本保持在节点的中心。因此,要强制左对齐,需要告知文本它可以有更多空间,这就是给出的两个解决方案所做的。

为了验证这一点,我们可以尝试用\hfills 填充文本,以查看文本框的大小(将原始文本与 Stefan 的解决方案交替):

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\newcommand{\altura}{.45cm}
\begin{document}

\begin{tikzpicture}[x=1cm, y=-\altura, node distance=0,outer sep=0,inner sep=0]
\tikzstyle{nome}=[draw, rectangle,anchor=west, minimum height=\altura,minimum width=9cm,fill=yellow!30]
\tikzstyle{widenome}=[draw, rectangle,anchor=west, minimum height=\altura,text width=9cm,fill=yellow!30]

\node[nome,right] (p1) {\rule{1ex}{1ex}\hfill text\hfill\rule{1ex}{1ex}};
\node[widenome,right] (p2) [below = of p1] {\rule{1ex}{1ex}\hfill text\hfill\rule{1ex}{1ex}};
\node[nome,right] (p3) [below = of p2] {\rule{1ex}{1ex}\hfill text text\hfill\rule{1ex}{1ex}};
\node[widenome,right] (p4) [below = of p3] {\rule{1ex}{1ex}\hfill text text\hfill\rule{1ex}{1ex}};
\node[nome,right] (p5) [below  = of p4] {\rule{1ex}{1ex}\hfill text text text\hfill\rule{1ex}{1ex}};
\node[widenome,right] (p6) [below  = of p5] {\rule{1ex}{1ex}\hfill text text text\hfill\rule{1ex}{1ex}};

\end{tikzpicture}
\end{document}

结果:

不同的阵营

因此,我们可以看到,在原始规范中,文本认为它位于一个刚好能容纳自己的盒子中。因此它曾是左对齐,据它所知!

答案3

一个选择是使用盒子:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{patterns}

\begin{document}

\newcommand{\altura}{.45cm}
\begin{tikzpicture}[x=1cm, y=-\altura, node distance=0,outer sep=0,inner sep=0]
\tikzstyle{nome}=[draw, rectangle, minimum height=\altura,fill=yellow!30,minimum width=9cm]

\node[nome] (p1) {\parbox{9cm}{text}};
\node[nome] (p2) [below = of p1] {\parbox{9cm}{text text}};
\node[nome] (p3) [below  = of p2] {\parbox{9cm}{text text text}};

\end{tikzpicture}

\end{document}

相关内容