我需要将信息放在网格的右下方。我无法旋转节点的标签文本。我最终使用了\rotatebox
,但有纯粹的TikZ
解决方案吗?
\documentclass{scrartcl}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[step=1cm] (1,1) grid (4,4);
\node[label=below:\rotatebox{-90}{a long text}] at (2.5,1) {};
\node[rotate=-90,label=below:rotate] at (1.5,0.5) {A};
\node[label=right:a long text] at (4,3.5) {};
\end{tikzpicture}
\end{document}
答案1
在这种情况下完全可以使用label
。你只需要重新排列一下选项,并调整一下标签的位置:
\documentclass{scrartcl}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[step=1cm] (1,1) grid (4,4);
\node[label={[label distance=0.5cm,text depth=-1ex,rotate=-90]right:a long text}] at (2.5,1) {};
\end{tikzpicture}
\end{document}
如您所见,这个想法是将rotate
选项作为实际选项引入标签,而不是节点。另外,请注意选项right
而不是below
和label distance
,这是必需的,因为系统将相对于节点旋转标签。此外,此时文本可能看起来有点偏离中心,因此需要进行一些小改动,以修改标签文本的垂直位置(同时旋转 -90 度!)text depth=-1ex
:。
答案2
您可能更喜欢使用文本节点而不是标签。如果您设置了anchor=west
,节点将“左对齐”,并且您可以照常旋转节点。
代码
\documentclass{scrartcl}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[step=1cm] (1,1) grid (4,4);
\tikzset{anchor=west}
\node at (4,1.5) {a long text};
\node at (4,2.5) {a long text};
\node at (4,3.5) {a long text};
\node[rotate=-90] at (1.5,1) {a long text};
\node[rotate=-90] at (2.5,1) {a long text};
\node[rotate=-90] at (3.5,1) {a long text};
\end{tikzpicture}
\end{document}