Chuyển đến nội dung

Nút, mũi tên và sơ đồ trong TikZ

Đặt mỗi hộp bằng \node[draw] (name) {text};, định vị các hộp tiếp theo bằng thư viện positioning (right=of name), và nối chúng bằng \draw[->] (a) -- (b);.

Nút

Một nút là một đoạn văn bản tại một điểm, có thể kèm khung. draw cho nó một đường viền, fill một nền, và circle hoặc ellipse một hình tròn (rectangle là mặc định). Một tên trong ngoặc tròn cho phép bạn tham chiếu đến nút về sau.

Nút với hình dạng, màu nền và kích thước

LaTeXPhần mở đầu: \usepackage{tikz}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \node[draw] (a) at (0,0) {plain box};
  \node[draw, rounded corners, fill=blue!10] (b) at (3,0) {rounded};
  \node[draw, circle, fill=yellow!40] (c) at (5.5,0) {44};
  \node[draw, ellipse] (d) at (8,0) {ellipse};
  \node[draw, minimum width=2.5cm, minimum height=1cm] at (1,-1.6) {fixed size};
  \node[draw, text width=2.6cm, align=center] at (5,-1.6) {text that wraps onto two lines};
\end{tikzpicture}

Mũi tên giữa các nút

\draw[->] (a) -- (b); vẽ một mũi tên từ nút a đến nút b. Đường bắt đầu và kết thúc ở viền của các nút, không phải ở tâm. -| và |- vẽ các đường nối vuông góc.

Một lưu đồ nhỏ với thư viện positioning

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning, arrows.meta}
\begin{document}
\begin{tikzpicture}[
    node distance=1.2cm and 1.6cm,
    box/.style={draw, rounded corners, fill=blue!8, minimum width=2.2cm, minimum height=0.8cm},
    >={Stealth},
  ]
  \node[box] (in) {Read data};
  \node[box, right=of in] (clean) {Clean};
  \node[box, right=of clean] (fit) {Fit model};
  \node[draw, circle, below=of clean] (ok) {OK?};
  \draw[->] (in) -- (clean);
  \draw[->] (clean) -- (fit);
  \draw[->] (fit) |- (ok);
  \draw[->] (ok) -| node[pos=0.75, left] {no} (in);
\end{tikzpicture}
\end{document}

right=of in đặt nút ở bên phải in, cách một khoảng node distance. Các hướng khác là left, above, below và các hướng chéo như above right. right=2cm of in đặt khoảng cách cho riêng một nút.

Nhãn trên mũi tên và nút

Một node viết ở giữa một đường sẽ ghi nhãn cho đường đó. above, below, left, right đặt phía, và midway, near start, near end hoặc pos=0.3 đặt vị trí dọc theo đường. label=below:text thêm một nhãn cho nút.

Sơ đồ trạng thái với các cạnh cong có nhãn

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning, arrows.meta}
\begin{document}
\begin{tikzpicture}[state/.style={draw, circle, minimum size=1cm}, >={Stealth}, node distance=2.4cm]
  \node[state, label=below:start] (s0) {$q_0$};
  \node[state, right=of s0] (s1) {$q_1$};
  \node[state, right=of s1, fill=green!15] (s2) {$q_2$};
  \draw[->] (s0) to[bend left] node[above] {$a$} (s1);
  \draw[->] (s1) to[bend left] node[below] {$b$} (s0);
  \draw[->] (s1) -- node[above] {$a$} (s2);
\end{tikzpicture}
\end{document}

Điểm neo

Mỗi nút có các điểm neo trên viền: north, south, east, west và các góc như north east. (box.north) là điểm ở chính giữa cạnh trên của box.

Mũi tên từ các điểm neo của một nút

LaTeXPhần mở đầu: \usepackage{tikz}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \node[draw, minimum width=3cm, minimum height=1cm] (box) {Server};
  \draw[->] (box.north) -- ++(0,0.7) node[above] {north};
  \draw[->] (box.east) -- ++(1,0) node[right] {east};
  \draw[->] (box.south west) -- ++(-0.6,-0.6) node[below left] {south west};
  \node[anchor=west] at (box.south east) {\small (anchor=west)};
\end{tikzpicture}

anchor=west trên một nút đặt nút sao cho điểm neo phía tây của nó nằm tại điểm đã cho.

Đầu mũi tên

Tùy chọnĐầu mũi tênTrong Scissor LaTeX
->, <-, <->đầu mũi tên mặc định của TikZHoạt động
-stealth, -latexcác đầu stealth và LaTeX cổ điểnHoạt động
-{Stealth}, -{Latex} (arrows.meta)các đầu mũi tên mới hơnHoạt động
|-|một vạch ở mỗi đầuHoạt động
>={Stealth} trên hìnhđầu mũi tên mà -> sử dụngHoạt động
tùy chọn đầu mũi tên như -{Stealth[length=3mm]}kích thước và hình dạng của đầu mũi tênMột phần: đầu mũi tên được vẽ với kích thước mặc định

Kích thước đầu mũi tên gần giống TikZ chứ không giống hệt.

Những gì chưa được hỗ trợ

Các tính năng này biên dịch được trong một bản cài đặt TeX nhưng không chạy ở đây. Phần lớn được báo trong thẻ Sự cố.

Tính năngĐiều xảy ra trong Scissor LaTeXNên viết gì thay thế
\matrix (và matrix of nodes)Cả hình trở thành một khung nét đứt kèm thông báoĐặt các nút bằng at (x,y) hoặc positioning
\picCả hình trở thành một khung nét đứt kèm thông báoLặp lại hình vẽ trong một scope với shift
trang trí đường (decorate, decoration=...)Bị bỏ qua kèm thông báo; đường được vẽ trơnMột đường trơn hoặc nét đứt
hình dạng nút từ shapes.geometric (diamond, trapezium ...)Được vẽ thành hình chữ nhật, kèm thông báorectangle, circle hoặc ellipse
đường doubleBị bỏ qua kèm thông báoHai nút hoặc hai đường
to[loop above] (một vòng lặp trên một nút)Không vẽ vòng lặp và không có thông báo; nhãn của nó nằm trên nútMột arc hoặc một đường cong .. controls .. từ viền nút
pin=Văn bản của pin được hiển thị, không có đường nốilabel=
pos= trên một đường -| hoặc |-Nhãn chỉ được đặt dọc theo đoạn thứ hai, nên pos=0.25 rơi gần gócGhi nhãn đoạn thứ hai với pos=0.75, hoặc tách đường làm hai
tikz-cd, circuitikz, forestHình bị bỏ ra, kèm thông báoTikZ đơn giản, hoặc một hình ảnh

\matrix trở thành một khung giữ chỗ

LaTeXPhần mở đầu: \usepackage{tikz}Mở trong trình soạn (mở trong thẻ mới)
\begin{tikzpicture}
  \matrix[draw] {
    \node {a}; & \node {b}; \\
    \node {c}; & \node {d}; \\
  };
\end{tikzpicture}

Thẻ Sự cố: \matrix in a picture is not supported yet

Nút hình thoi được vẽ thành hình chữ nhật

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
  \node[draw, diamond] at (0,0) {Yes?};
  \node[draw, ellipse] at (2.5,0) {ellipse works};
\end{tikzpicture}
\end{document}

Thẻ Sự cố: TikZ node option 'diamond' is not supported yet

Tài liệu hướng dẫn TikZ (trong gói PGF) trình bày về nút, thư viện positioning và đầu mũi tên: ctan.org/pkg/pgf. Về hình dạng và đường, xem hình vẽ với TikZ.

Xem thêm TikZ cơ bản, TikZ và Hình và ảnh.

Hỏi và đáp

Làm thế nào để vẽ lưu đồ trong LaTeX?

Dùng các nút TikZ có draw cho các hộp, thư viện positioning (right=of a, below=of b) để đặt chúng, và \draw[->] (a) -- (b); cho các mũi tên.

Làm thế nào để đặt chữ lên mũi tên trong TikZ?

Viết một nút ở giữa đường: \draw[->] (a) -- node[above] {text} (b);.

tikz-cd có hoạt động trong Scissor LaTeX không?

Chưa. Một sơ đồ tikzcd bị bỏ ra kèm thông báo. Thay vào đó, hãy vẽ các sơ đồ đơn giản bằng nút và mũi tên.

Mọi ví dụ trên trang này đều được Scissor LaTeX dàn trang khi xây dựng trang web. Cập nhật lần cuối 2026-11-07.