我的简单问题是如何使用 tikz 在列中设置一些文本,例如
+---+
| A |
| B |
| C |
+---+
我不想旋转文本,因此无法使用旋转选项或沿路径设置文本方法。能给我提示一下如何正确操作吗?
答案1
正如我在评论中所说, 中几乎允许任何内容node
;特别是多行文本。唯一的问题是节点需要知道如何垂直对齐文本。这由键控制align
(PGF 手册(PGF2.10)中的第 16.4.3 节)。在下面,我选择了center
。使用锚点可以轻松获取节点的大小。为了确保锚点足够大以使生成的形状不会遮挡文本,我选择了椭圆作为节点形状。正如您所说,可能不值得为一个符号设计一个全新的形状,所以我手动绘制了一些与您描述的内容大致相似的东西。为了正确绘制弧线,我编写了一个小辅助宏来测量两点之间的距离。这是因为弧线是使用半径指定的,但我们想在某些点之间绘制弧线。因此,我们首先测量点,然后使用测量值指定半径。
\documentclass[border=10]{standalone}
%\url{http://tex.stackexchange.com/q/26028/86}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\makeatletter
\newcommand{\measure}[2]{%
\tikz@scan@one@point\pgfutil@firstofone#1\relax
\pgf@xa=-\pgf@x\relax
\pgf@ya=-\pgf@y\relax
\tikz@scan@one@point\pgfutil@firstofone#2\relax
\advance\pgf@x by \pgf@xa\relax
\advance\pgf@y by \pgf@ya\relax
\edef\xdistance{\the\pgf@x}%
\edef\ydistance{\the\pgf@y}%
}
\makeatother
\begin{document}
\begin{tikzpicture}
\node[align=center,ellipse] (a) {this\\is\\some\\text\\arranged\\vertically};
\measure{(a.west)}{(a.north)}
\draw (a.east) |- (a.north) -| (a.west) arc[x radius=\xdistance, y radius=\ydistance, start angle=-180, end angle=0];
\end{tikzpicture}
\end{document}
结果: