请考虑以下 TikZ 代码:
% aligning text in node: node[align=left] only in latest 2010 tikz:
% http://compgroups.net/comp.text.tex/-tikz-option-for-ragged-left-text-in-node
% or use minipage inside node: http://www.texample.net/tikz/examples/boxes-with-text-and-math/
% or also parbox: http://en.wikibooks.org/wiki/LaTeX/Advanced_Topics
%% note: parbox and minipage width 5em - will extend beyond the minimum width=5em!
% or use /tikz/text ragged:
% http://old.nabble.com/Equal-width-nodes-within-%22matrix-of-nodes%22--td15266855.html
\begin{tikzpicture}[font=\tt]
\matrix (xA) [anchor=west,text ragged]
{%
\node(xA1) [draw,right,minimum width=5em] {horizon1} ; \\
\node(xA2) [draw,right] {horiz2} ; \\
% \node(xA3) [draw,anchor=west,minimum width=5em] {\begin{minipage}{5em}hor3\end{minipage}} ; \\
\node(xA3) [draw,anchor=west,minimum width=5em] {\parbox{5em}{hor3}} ; \\
};
\matrix (yA) [below left=of xA]
{%
\node(yA1) [draw,right,rotate=270] {vert1} ; &
\node(yA2) [draw,right,rotate=270] {vert2} ; &
\node(yA3) [draw,right,rotate=270] {vert3} ; \\
};
\begin{scope}[rotate=270]
\matrix (zA) [rotate=270,below left=of yA]
{%
\node(zA1) [draw,right] {horvert1} ; \\
\node(zA2) [draw,right] {horvert2} ; \\
\node(zA3) [draw,right] {horvert3} ; \\
};
\end{scope}
\end{tikzpicture}
它生成以下图像:
我希望实现类似情况yA
- 除了,我希望文本从右到左排列“vert1”、“vert2”、“vert3”(与显示的相反) - 这对应于图形xA
旋转 270 度。
这就是我想对这个zA
案例做的事情 - 但是,正如我们所见,根本没有任何旋转!
这是否意味着 TikZ 中节点矩阵无法旋转?如果不是,我该如何旋转这样的矩阵?
答案1
嗯,我想这就是答案,pgfmanual.pdf 第 487 页:
旋转和缩放。矩阵节点是从未旋转或移位,因为当前坐标变换矩阵在 \pgfmatrix 的开头被重置(平移部分除外)。这是故意的并且将来不会改变。如果您需要旋转矩阵,则必须自行安装适当的画布变换。
但是,节点和单元格图片里面的内容可以正常旋转和缩放。
...另外,来自具有倾斜选项的矩阵节点? - pgf-users:
手册上确实说这是不可能的(见第 16.2 节“矩阵是节点”),并且变换矩阵在矩阵开始时重置。 的(内部)使用
\halign
排除了任何类型的奇特变换。如果不使用 ,则很难进行矩阵计算\halign
。
... 然而 ...
...具有倾斜选项的矩阵节点? - pgf-users还说:
的确。
但是,您可以执行以下操作:将整个节点放入 中
tikzpicture
,然后将其放入具有倾斜
选项的节点中。例如... (A) -- (B) node[midway,sloped] {\tikz \matrix ...;};
这意味着上面的代码可以像这样修改:
\begin{tikzpicture}[font=\tt]
\matrix (xA) [anchor=west,text ragged]
{%
\node(xA1) [draw,right,minimum width=5em] {horizon1} ; \\
\node(xA2) [draw,right] {horiz2} ; \\
% \node(xA3) [draw,anchor=west,minimum width=5em] {\begin{minipage}{5em}hor3\end{minipage}} ; \\
\node(xA3) [draw,anchor=west,minimum width=5em] {\parbox{5em}{hor3}} ; \\
};
\matrix (yA) [below left=of xA]
{%
\node(yA1) [draw,right,rotate=270] {vert1} ; &
\node(yA2) [draw,right,rotate=270] {vert2} ; &
\node(yA3) [draw,right,rotate=270] {vert3} ; \\
};
\node (zzA) [rotate=270,below left=of yA] {
\tikz \matrix (zA)
{%
\node(zA1) [draw,right] {horvert1} ; \\
\node(zA2) [draw,right] {horvert2} ; \\
\node(zA3) [draw,right] {horvert3} ; \\
};
};
\end{tikzpicture}
...最终将得到最初想要的图像: