请考虑下面的图片:
我想使用tikzpicture
环境创建这些节点。每个节点中间都必须有一条分界线,以便将节点分为三个部分(所有部分都包含最多 2 位数字)。还有一些节点带有连字符类型的箭头,指向其他节点;这些并集(带或不带点)和一个线段(带有一些线条上方的文本)必须加入或离开节点的左端或右端之一,正如您在图像中看到的那样。
此外,为了让事情变得更简单,我希望每个节点和每个联合都能够以一种简单的方式提供,例如:
\begin{tikzpicture}
\node at (0,0) (1) {1,0,0};
\node at (1,-1) (2) {2,5,7};
\node at (2,0) (3) {3,9,61};
\draw (1) to [text=A(1)] (2) to [dotted] (3);
\end{tikzpicture}
(还有更多节点和连接)。
对于那些好奇的人,我试图用你们巨大的心去模仿一个关键路径方法 (CPM)。
谢谢你!!
编辑:
按照建议扎尔科以及提供的示例伊格纳西我创建了一个 MWE,如果我使用该包,它将生成 18 个错误\usepackage[spanish]{babel}
(我需要它,但这次我附上它以向您展示代码运行良好)。我如何将我需要的这个包添加到代码中?:
\documentclass{article}
%\usepackage[spanish]{babel} % <-- HERE IS THE PACKAGE THAT I NEED
\usepackage[utf8]{inputenc}
\usepackage{fancyhdr}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{tasks}
\usepackage{vmargin}
\usepackage{enumitem}
\usepackage{hhline}
\usepackage{pdflscape}
\setpapersize{A4}
\setmargins{2.2cm}
{0.5cm}
{16.5cm}
{23.42cm}
{30pt}
{1cm}
{0pt}
{2cm}
\pagestyle{fancy}
\fancyhf{}
\cfoot{\large \thepage}
\renewcommand{\headrulewidth}{0pt}
\usepackage{colortbl}
\usepackage{pgfplots}
\usetikzlibrary{shapes.multipart, positioning}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}[
trinode/.style={
circle split,
draw,
path picture={\draw (path picture bounding box.center)--(path picture bounding box.south);}}
]
%\node[trinode] (1) {99\nodepart{lower} 99\ \ 99};
\node[trinode] at (0,0) (1) {99\nodepart{lower} 99\ \ 99};
%\node[trinode, below right=of 1] (2) {99\nodepart{lower} 99\ \ 99};
\node[trinode] at (2,-2) (2) {99\nodepart{lower} 99\ \ 99};
%\node[trinode, above right=of 2] (3) {99\nodepart{lower} 99\ \ 99};
\node[trinode] at (4,0) (3) {99\nodepart{lower} 99\ \ 99};
\draw[->] (1)--(2) node[midway, right] {A(1)};
\draw[->,dashed] (2)--(3);
\end{tikzpicture}
\end{document}
答案1
我曾在 TeX.SX 的某个地方见过这种类型的节点,但由于我不知道向谁搜索它们,因此我提供了一个解决方案circle split
。
这些节点使用上下两个文本,中间用一条水平线隔开。我的解决方案是将两个下部数字声明为一个公共文本,然后命令path picture
绘制垂直线。
节点之间的连接和路径的标签是常见的。
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{babel, positioning, shapes.multipart}
\begin{document}
\begin{tikzpicture}[
trinode/.style={
circle split,
draw,
path picture={\draw (path picture bounding box.center)--(path picture bounding box.south);}}]
\node[trinode] (1) {99\nodepart{lower} 99\ \ 99};
\node[trinode, below right=of 1] (2) {99\nodepart{lower} 99\ \ 99};
\node[trinode, above right=of 2] (3) {99\nodepart{lower} 99\ \ 99};
\draw[->] (1)--(2) node[midway, right]{A(1)};
\draw[->,dashed] (2)--(3);
\end{tikzpicture}
\end{document}