我对这个网站很陌生,对 LaTeX 也一样陌生。问题很简单:如何让一些文本显示出来节点上方而不是在里面?例如,我使用这个 tikz 东西制作了一个循环图:
\begin{figure}
\centering
\begin{tikzpicture}[scale=.7, every node/.style={circle,fill=blue!20}]
\node (n1) at (0,0) {1};
\node (n2) at (3,0) {2};
\node (n3) at (1.5,3) {3};
\draw (n1) -- (n2) -- (n3) -- (n1);
\end{tikzpicture}
\end{figure}
到目前为止,我的尝试已经让我达到了以下结果:
\begin{figure}[h]
\centering
\begin{tikzpicture}
\filldraw [blue!20] (.5,0) circle (8pt);
\node (n1) at (.2,.5) {$x$};
\filldraw [blue!20] (3.5,0) circle (8pt);
\node (n2) at (3.75,.4) {$x-1$};
\filldraw [blue!20] (1.75,3) circle (8pt);
\node (n3) at (1.75,3.5) {$x-2$};
\draw (.5,0) -- (3.5,0) -- (1.75,3) -- (.5,0);
\end{tikzpicture}
\end{figure}
但是,我不喜欢使用\filldraw
指令作为“节点”,而喜欢\node
使用指令。我从一些网站复制/粘贴了我开始使用 tikz 的内容,因此我不确定如何获取“全局应用”属性/设置并使它们仅适用于单个节点。我尝试了一些方法,但这没有帮助。
我想要的基本上是第二张图的效果。但是,我希望它能更加精致。
谢谢,
安迪
答案1
首先,您可以通过以下方式仅为特定节点定义样式:
\begin{tikzpicture}[scale=.7,
mycirc/.style={circle,fill=blue!20, minimum size=0.5cm}
]
并通过创建节点将此样式应用于节点
\node[mycirc] at (0,0) {};
然后,您可以label
创建node
\node[mycirc, label={$x-1$}] at (0,0) {};
并且您可以定义此标签的打印位置
\node[mycirc, label=right:{$x-1$}] at (0,0) {};
\node[mycirc, label=left:{$x-1$}] at (0,0) {};
\node[mycirc, label=above:{$x-1$}] at (0,0) {};
\node[mycirc, label=below:{$x-1$}] at (0,0) {};
或甚至以任意角度
\node[mycirc, label=165:{$x-1$}] at (0,0) {};
其中165
是角度,单位为度。0
对应于right
,90
到above
等等。
因此,通过这些更改,图表的最小工作示例 (MWE) 如下所示:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[scale=.7,
mycirc/.style={circle,fill=blue!20, minimum size=0.5cm}
]
\node[mycirc,label=left:{$x$}] (n1) at (0,0) {};
\node[mycirc,label=311:{$x-1$}] (n2) at (3,0) {};
\node[mycirc,label=above:{$x-2$}] (n3) at (1.5,3) {};
\draw (n1) -- (n2) -- (n3) -- (n1);
\end{tikzpicture}
\end{document}