我无法将文本左对齐。
\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
。然后,它测量节点的相关大小并将其与指定的最小值进行比较。如果节点较小,则将其放大到最小尺寸。要意识到的关键是它通过以下方式实现此目的增加填充。也就是说,它增加了节点内容和形状之间的边框。因此节点内容(文本)别看尺寸增加。就文本而言,它仍然在与之前相同的框中(刚好足够容纳它)。由于填充在需要的地方均匀增加,因此净效果是将文本保持在节点的中心。因此,要强制左对齐,需要告知文本它可以有更多空间,这就是给出的两个解决方案所做的。
为了验证这一点,我们可以尝试用\hfill
s 填充文本,以查看文本框的大小(将原始文本与 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}