> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/vi/hinh-va-bang/05-tikz-package.md).

# Gói TikZ

## Giới thiệu

[Ti*k*Z](https://en.wikipedia.org/wiki/PGF/TikZ) là công cụ phức tạp và mạnh mẽ nhất để tạo các phần tử đồ họa trong LaTeX. Bắt đầu với một ví dụ đơn giản, bài viết này giới thiệu một số khái niệm cơ bản: vẽ đường thẳng, chấm, đường cong, hình tròn, hình chữ nhật, v.v.

Trước tiên, tải `tikz` gói bằng cách thêm dòng `\usepackage{tikz}` vào phần tiền đề của tài liệu, sau đó vẽ một đồ họa bằng `tikzpicture` môi trường.

```latex
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[gray, thick] (-1,2) -- (2,-4);
\draw[gray, thick] (-1,-1) -- (2,2);
\filldraw[black] (0,0) circle (2pt) node[anchor=west]{Điểm giao nhau};
\end{tikzpicture}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=First+TikZ+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Btikz%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cdraw%5Bgray%2C+thick%5D+%28-1%2C2%29+--+%282%2C-4%29%3B%0A%5Cdraw%5Bgray%2C+thick%5D+%28-1%2C-1%29+--+%282%2C2%29%3B%0A%5Cfilldraw%5Bblack%5D+%280%2C0%29+circle+%282pt%29+node%5Banchor%3Dwest%5D%7BIntersection+point%7D%3B%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Ví dụ này tạo ra kết quả sau:

![OLV2tikz1.png](/files/e3e6d33dc0f28428a0528442ce6108b18aff590d)

Trong ví dụ này, hai đường thẳng và một điểm được vẽ. Để thêm một đường thẳng, lệnh `\draw[gray, thick]` định nghĩa một phần tử đồ họa có *màu* là `xám` và với một `dày` nét vẽ. Thực ra, đường thẳng được xác định bởi hai điểm đầu mút của nó, `(-1,2)` và `(2,-4)`, nối với nhau bởi `--`.

Tính năng *điểm* thực ra là một `hình tròn` được vẽ bằng `\filldraw[black]`, lệnh này không chỉ vẽ hình tròn mà còn tô nó bằng màu đen. Trong lệnh này, tâm `(0,0)` và bán kính `(2pt)` được khai báo. Bên cạnh điểm là một `nút`, thực ra là một hộp chứa văn bản `điểm giao nhau`, và được neo tại `phía tây` của điểm.

Điều quan trọng cần lưu ý là dấu chấm phẩy `;` được dùng ở cuối mỗi `lệnh draw` lệnh này.

Lưu ý: Môi trường `tikzfigure` có thể được đặt bên trong môi trường figure hoặc môi trường tương tự. Xem [Chèn hình ảnh](/latex/vi/chu-de-khac/27-inserting-images.md) bài viết để biết thêm thông tin về chủ đề này.

## Các phần tử cơ bản: điểm, đường thẳng và đường đi

Trong phần này, chúng tôi đưa ra một số ví dụ cho thấy cách tạo một số phần tử đồ họa cơ bản có thể kết hợp để tạo ra các hình vẽ phức tạp hơn.

```latex
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}

\draw (-2,0) -- (2,0);
\filldraw [gray] (0,0) circle (2pt);
\draw (-2,-2) .. controls (0,0) .. (2,-2);
\draw (-2,2) .. controls (-1,0) and (1,0) .. (2,2);

\end{tikzpicture}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Second+TikZ+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Btikz%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%0A%5Cdraw+%28-2%2C0%29+--+%282%2C0%29%3B%0A%5Cfilldraw+%5Bgray%5D+%280%2C0%29+circle+%282pt%29%3B%0A%5Cdraw+%28-2%2C-2%29+..+controls+%280%2C0%29+..+%282%2C-2%29%3B%0A%5Cdraw+%28-2%2C2%29+..+controls+%28-1%2C0%29+and+%281%2C0%29+..+%282%2C2%29%3B%0A%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Ví dụ này tạo ra kết quả sau:

![OLV2tikz2.png](/files/2dfd0eeae85c8766a5e404080e48e5a5b3a101fd)

Có ba lệnh cơ bản trong ví dụ này:

* **`\draw (-2,0) -- (2,0);`**: Lệnh này định nghĩa một đường thẳng có các điểm cuối là `(-2,0)` và `(2,0)`.
* **`\filldraw [gray] (0,0) circle (2pt);`**: Điểm được tạo như một rất nhỏ `xám` `hình tròn` đặt tâm tại `(0,0)` và có bán kính là `(2pt)`. Gói `\filldraw` được dùng để vẽ các phần tử và tô chúng bằng một màu cụ thể. Xem phần tiếp theo để biết thêm ví dụ.
* **`\draw (-2,2) .. controls (-1,0) and (1,0) .. (2,2);`**: Vẽ một [đường cong Bézier](https://en.wikipedia.org/wiki/B%C3%A9zier_curve). Có 4 điểm xác định nó: `(-2,2)` và `(2,2)` là các điểm đầu mút của nó, `(-1,0)` và `(1,0)` đang [*các điểm điều khiển*](https://en.wikipedia.org/wiki/Control_point_\(mathematics\)) quyết định độ "cong" của nó. Bạn có thể xem hai điểm này như các "điểm hút".

## Các hình học cơ bản: Hình tròn, hình elip và đa giác

Các hình hình học có thể được tạo từ những phần tử đơn giản hơn, vì vậy hãy bắt đầu với hình tròn, hình elip và cung.

```latex
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\filldraw[color=red!60, fill=red!5, very thick](-1,0) circle (1.5);
\fill[blue!50] (2.5,0) ellipse (1.5 and 0.5);
\draw[ultra thick, ->] (6.5,0) arc (0:220:1);
\end{tikzpicture}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Third+TikZ+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Btikz%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cfilldraw%5Bcolor%3Dred%2160%2C+fill%3Dred%215%2C+very+thick%5D%28-1%2C0%29+circle+%281.5%29%3B%0A%5Cfill%5Bblue%2150%5D+%282.5%2C0%29+ellipse+%281.5+and+0.5%29%3B%0A%5Cdraw%5Bultra+thick%2C+-%3E%5D+%286.5%2C0%29+arc+%280%3A220%3A1%29%3B%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Ví dụ này tạo ra kết quả sau:

![TikzEx3.png](/files/7fd774925e19bd5bb43770ee35e064f37089666d)

* **`\filldraw[color=red!60, fill=red!5, very thick](-1,0) circle (1.5);`**: Lệnh này đã được dùng ở phần trước để vẽ một *điểm*, nhưng trong trường hợp này có thêm một số tham số bên trong dấu ngoặc vuông. Chúng được giải thích dưới đây:
  * **`color=red!60`**: Màu của vòng quanh hình tròn được đặt thành đỏ 60% (nhạt hơn màu đỏ "thuần"). Xem [hướng dẫn tham khảo](#reference-guide) để xem danh sách các màu mặc định có sẵn trong LaTeX; đồng thời xem [Sử dụng màu trong LaTeX](/latex/vi/dinh-dang/13-using-colors-in-latex.md) để tìm hiểu cách tạo màu riêng của bạn.
  * **`fill=red!5`**: Hình tròn được tô bằng một sắc đỏ nhạt hơn nữa.
  * **`very thick`**: Tham số này xác định độ dày của nét vẽ. Xem [hướng dẫn tham khảo](#reference-guide) để xem danh sách đầy đủ các giá trị.
* **`\fill[blue!50] (2.5,0) ellipse (1.5 and 0.5);`**: Để tạo một hình elip, bạn cung cấp một điểm tâm `(2.5,0)`, và hai bán kính: ngang và dọc (`1.5` và `0.5` tương ứng). Ngoài ra, hãy chú ý lệnh `fill` thay vì `lệnh draw` hoặc filldraw, vì trong trường hợp này không cần kiểm soát màu bên ngoài và bên trong.
* **`\draw[ultra thick, ->] (6.5,0) arc (0:220:1);`**: Lệnh này sẽ vẽ một cung bắt đầu từ `(6.5,0)`. Tham số bổ sung `->` cho biết rằng cung sẽ có một mũi tên ở cuối. Ngoài điểm bắt đầu, bạn phải cung cấp thêm ba giá trị: góc bắt đầu, góc kết thúc và bán kính; ở đây, ba giá trị tham số này được cung cấp theo định dạng `(0:220:1)`.

Ngoài các hình học cong, bạn cũng có thể tạo các phần tử sử dụng các đường thẳng, với cú pháp tương tự:

```latex
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[blue, very thick] (0,0) rectangle (3,2);
\draw[orange, ultra thick] (4,0) -- (6,0) -- (5.7,2) -- cycle;
\end{tikzpicture}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Fourth+TikZ+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Btikz%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cdraw%5Bblue%2C+very+thick%5D+%280%2C0%29+rectangle+%283%2C2%29%3B%0A%5Cdraw%5Borange%2C+ultra+thick%5D+%284%2C0%29+--+%286%2C0%29+--+%285.7%2C2%29+--+cycle%3B%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Ví dụ này tạo ra kết quả sau:

![OLV2tikz4.png](/files/8e933a1f6ee3a8ecbf845d4730b0f950d713df8c)

* **`\draw[blue, very thick] (0,0) rectangle (3,2);`**: Hình chữ nhật được tạo bởi lệnh đặc biệt `rectangle`. Bạn phải cung cấp hai điểm, điểm thứ nhất là nơi "bút chì" bắt đầu vẽ hình chữ nhật và điểm thứ hai là góc đối diện theo đường chéo.
* **`\draw[orange, ultra thick] (4,0) -- (6,0) -- (5.7,2) -- cycle;`**: Để vẽ một đa giác, ta vẽ một *đóng* đường đi bằng các đoạn thẳng: một đoạn từ `(4,0)` sang `(6,0)` và một đoạn từ `(6,0)` sang `(5.7,2)`. Gói `cycle` lệnh này có nghĩa là điểm bắt đầu và điểm kết thúc phải trùng nhau để tạo thành một đường đi (hình) "đóng", từ đó hình thành đoạn thẳng cuối cùng.

## Sơ đồ

Các nút có lẽ là những phần tử linh hoạt nhất trong TikZ. Chúng ta đã dùng một nút ở phần giới thiệu—để thêm một chút văn bản vào hình. Ví dụ tiếp theo dùng các nút để tạo một sơ đồ.

```latex
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
roundnode/.style={circle, draw=green!60, fill=green!5, very thick, minimum size=7mm},
squarednode/.style={rectangle, draw=red!60, fill=red!5, very thick, minimum size=5mm},
]
%Nút
\node[squarednode]      (maintopic)                              {2};
\node[roundnode]        (uppercircle)       [above=of maintopic] {1};
\node[squarednode]      (rightsquare)       [right=of maintopic] {3};
\node[roundnode]        (lowercircle)       [below=of maintopic] {4};

%Đường nối
\draw[->] (uppercircle.south) -- (maintopic.north);
\draw[->] (maintopic.east) -- (rightsquare.west);
\draw[->] (rightsquare.south) .. controls +(down:7mm) and +(right:7mm) .. (lowercircle.east);
\end{tikzpicture}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=More+advanced+TikZ+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Btikz%7D%0A%5Cusetikzlibrary%7Bpositioning%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%5B%0Aroundnode%2F.style%3D%7Bcircle%2C+draw%3Dgreen%2160%2C+fill%3Dgreen%215%2C+very+thick%2C+minimum+size%3D7mm%7D%2C%0Asquarednode%2F.style%3D%7Brectangle%2C+draw%3Dred%2160%2C+fill%3Dred%215%2C+very+thick%2C+minimum+size%3D5mm%7D%2C%0A%5D%0A%25Nodes%0A%5Cnode%5Bsquarednode%5D++++++%28maintopic%29++++++++++++++++++++++++++++++%7B2%7D%3B%0A%5Cnode%5Broundnode%5D++++++++%28uppercircle%29+++++++%5Babove%3Dof+maintopic%5D+%7B1%7D%3B%0A%5Cnode%5Bsquarednode%5D++++++%28rightsquare%29+++++++%5Bright%3Dof+maintopic%5D+%7B3%7D%3B%0A%5Cnode%5Broundnode%5D++++++++%28lowercircle%29+++++++%5Bbelow%3Dof+maintopic%5D+%7B4%7D%3B%0A%0A%25Lines%0A%5Cdraw%5B-%3E%5D+%28uppercircle.south%29+--+%28maintopic.north%29%3B%0A%5Cdraw%5B-%3E%5D+%28maintopic.east%29+--+%28rightsquare.west%29%3B%0A%5Cdraw%5B-%3E%5D+%28rightsquare.south%29+..+controls+%2B%28down%3A7mm%29+and+%2B%28right%3A7mm%29+..+%28lowercircle.east%29%3B%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Ví dụ này tạo ra kết quả sau:

![OLV2tikz5.png](/files/ed351172ec52a45c4fb13aa58dd0c3a8cf819196)

Về cơ bản có ba lệnh trong hình này: một định nghĩa nút, một khai báo nút và các đường nối hai nút.

* **`roundnode/.style={circle, draw=green!60, fill=green!5, very thick, minimum size=7mm}`**: Được truyền dưới dạng tham số cho `tikzpicture` môi trường. Nó định nghĩa một nút sẽ được tham chiếu là `roundnode`: nút này sẽ là một hình tròn có viền ngoài được vẽ bằng màu `green!60` và sẽ được tô bằng `green!5`. Nét vẽ sẽ `very thick` và `kích thước tối thiểu` là `7mm`. Dòng bên dưới định nghĩa một nút hình chữ nhật thứ hai có tên là `squarednode`, với các tham số tương tự.
* **`\node[squarednode] (maintopic) {2};`**: Lệnh này sẽ tạo ra một `squarednode`, như đã được định nghĩa trong lệnh trước. Nút này sẽ có id là `maintopic` và sẽ chứa số `2`. Nếu bạn để trống bên trong dấu ngoặc nhọn thì sẽ không hiển thị văn bản nào.
* **`[above=of maintopic]`**: Lưu ý rằng tất cả các nút trừ nút đầu tiên đều có thêm một tham số xác định vị trí tương đối của nó so với các nút khác. Ví dụ, `[above=of maintopic]` có nghĩa là nút này sẽ xuất hiện phía trên nút có tên `maintopic`. Để hệ thống định vị này hoạt động, bạn phải thêm `\usetikzlibrary{positioning}` vào phần tiền đề của bạn. Nếu không có `positioning` thư viện, bạn có thể dùng cú pháp `above of=maintopic` thay vào đó, nhưng cú pháp `positioning` linh hoạt và mạnh mẽ hơn: bạn có thể mở rộng nó để viết `above=**3cm** of maintopic` tức là kiểm soát khoảng cách thực tế từ `maintopic`.
* **`\draw[->] (uppercircle.south) -- (maintopic.north);`**: Sẽ vẽ một đường thẳng giống mũi tên. Cú pháp này đã được giải thích ở phần [các phần tử cơ bản](#basic-elements-points-lines-and-paths) phần. Điểm khác duy nhất là cách chúng ta viết các điểm đầu mút của đường thẳng: bằng cách tham chiếu đến một nút (đó là lý do chúng ta đặt tên cho chúng) và một vị trí tương đối so với nút.

## Hướng dẫn tham khảo

Các tham số màu sắc và độ dày có thể có trong `tikz` gói:

| tham số | giá trị                                                     | picture                                                              |
| ------- | ----------------------------------------------------------- | -------------------------------------------------------------------- |
| color   | white, black, red, green, blue, cyan, magenta, yellow       | ![BasicColours.png](/files/1343318fcfaae3db9a1de04471219a49c603f4bd) |
| độ dày  | ultra thin, very thin, thin, thick, very thick, ultra thick | ![Thickness.png](/files/6f00f46479cf35cffeca891e622aaebe7399ae8b)    |

Có thể có thêm các màu khác trong bản phân phối LaTeX của bạn. Xem [Sử dụng màu trong LaTeX](/latex/vi/dinh-dang/13-using-colors-in-latex.md)

## Đọc thêm

Để biết thêm thông tin, xem:

* [Sử dụng màu trong LaTeX](/latex/vi/dinh-dang/13-using-colors-in-latex.md)
* [gói Pgfplots](/latex/vi/theo-linh-vuc/08-pgfplots-package.md)
* [Chèn hình ảnh](/latex/vi/chu-de-khac/27-inserting-images.md)
* [Danh sách bảng biểu và hình vẽ](/latex/vi/hinh-va-bang/03-lists-of-tables-and-figures.md)
* [Định vị hình ảnh và bảng](/latex/vi/hinh-va-bang/02-positioning-images-and-tables.md)
* [Vẽ sơ đồ trực tiếp trong LaTeX](/latex/vi/hinh-va-bang/04-picture-environment.md)
* [Sổ tay gói TikZ và PGF](http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf)
* [Các ví dụ TikZ và PGF tại TeXample.net](http://www.texample.net/tikz/examples/all/)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/vi/hinh-va-bang/05-tikz-package.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
