> 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/04-picture-environment.md).

# Vẽ sơ đồ trực tiếp trong LaTeX

## Giới thiệu

tích hợp sẵn của LaTeX `picture` môi trường có thể được dùng để tạo sơ đồ/hình vẽ—bạn không *cần* cần tải bất kỳ gói ngoài nào để dùng nó, nhưng các gói như [`pict2e`](https://ctan.org/pkg/pict2e?lang=en) và [`picture`](https://ctan.org/pkg/picture) đã được viết để bổ sung hoặc cải thiện các tính năng của nó.

Bài viết này cung cấp phần giới thiệu ngắn gọn về `picture` môi trường và tất cả các ví dụ đều sử dụng [`pict2e` gói](https://ctan.org/pkg/pict2e?lang=en). Tài liệu chi tiết hơn và nhiều ví dụ hữu ích có sẵn trong các nguồn sau:

* [sổ tay tham khảo không chính thức của LaTeX2e](https://latexref.xyz/picture.html)
* [Giới thiệu về LaTeX2ε không quá ngắn](https://tobi.oetiker.ch/lshort/lshort.pdf) (xem Chương 5)
* [Wikibooks](https://en.wikibooks.org/wiki/LaTeX/Picture)
* [các câu hỏi được gắn thẻ `picture-mode` trên tex.stackexchange](https://tex.stackexchange.com/questions/tagged/picture-mode)
* [`pict2e` tài liệu gói](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/pict2e/pict2e.pdf)

Khi so sánh với các công cụ đồ họa mạnh mẽ và tinh vi như [TikZ/PGF](https://en.wikipedia.org/wiki/PGF/TikZ), [MetaPost](https://tug.org/metapost.html), [PSTricks](https://ctan.org/topic/pstricks?lang=en) hoặc [Asymptote](https://ctan.org/pkg/asymptote?lang=en) trang `picture` môi trường có vẻ khá hạn chế, nhưng đôi khi nó có thể đủ cho những gì bạn cần làm.

## Tạo một bức hình mới

Tạo một bức hình mới thường bao gồm các bước sau:

1. xác định kích thước của các đơn vị vẽ bạn muốn dùng;
2. khai báo một `picture` môi trường xác định kích thước của bức hình;
3. vẽ từng thành phần đồ họa riêng lẻ bằng các `\put`, `\multiput` hoặc `\qbezier` lệnh.

### Xác định kích thước của các đơn vị vẽ

Để tạo một bức hình, bạn thường bắt đầu bằng cách đặt *đơn vị vẽ* thông qua lệnh `\unitlength`, lệnh này phải được dùng bên ngoài một `picture` môi trường. Ví dụ, nếu bạn viết

```latex
\setlength{\unitlength}{1cm}
```

các đơn vị vẽ sẽ được hiểu là bội số của 1cm. Đơn vị mặc định là 1pt.

### Xác định kích thước của bức hình của bạn

Dạng tổng quát của `picture` môi trường như sau

```latex
\begin{picture}(width, height)(Xoffset, Yoffset)
 ...
\end{picture}
```

trong đó

* `width` và `chiều cao` là các giá trị, theo đơn vị của `\unitlength`, xác định kích thước của bức hình. LaTeX dùng các giá trị này để tạo một hộp có kích thước là
  * chiều rộng hộp (hình) = `width` × `\unitlength`
  * chiều cao hộp (hình) = `chiều cao` × `\unitlength`
* `(Xoffset, Yoffset)` là một tọa độ tùy chọn dùng để đặt gốc (góc dưới bên trái) của bức hình, được biểu diễn dưới dạng một *độ lệch* so với vị trí mặc định. `Xoffset` và `Yoffset` cũng được biểu diễn theo các đơn vị do giá trị hiện tại của `\unitlength`.

Lưu ý rằng `Xoffset` và `Yoffset` không ảnh hưởng đến lượng không gian mà LaTeX dành ra; tức là kích thước hộp.

#### Hiểu về kích thước của picture

Chúng ta sẽ tạo hai bức hình, cả hai đều sử dụng `\setlength{\unitlength}{1cm}` và mỗi bức có một `width` và `chiều cao` rộng 3 đơn vị.

Bức hình thứ nhất sử dụng gốc mặc định là `(0,0)`:

```latex
\begin{picture}(3,3)
...
\end{picture}
```

bức hình thứ hai dịch gốc đi `(1,1)`:

```latex
\begin{picture}(3,3)(1,1)
...
\end{picture}
```

### Vẽ đồ họa

Đồ họa được tạo bằng một chuỗi `\put`, `\multiput`, hoặc `\qbezier` lệnh tạo ra các “thành phần” riêng lẻ (hoặc “đối tượng”) để từ đó bức hình hay minh họa được xây dựng:

* `\put(x, y){*component*}` vẽ `*component*` tại vị trí `(x, y)`.
* `\multiput(x, y)(dx, dy){n}{*component*}` vẽ `*component*` `n` lần: bắt đầu tại vị trí `(x, y)` và liên tục tịnh tiến theo `(dx, dy)` để vẽ lại `*component*`.
* `\qbezier[n](x<sub>1</sub>, y<sub>1</sub>)(x, y)(x<sub>2</sub>, y<sub>2</sub>)`: vẽ một [đường cong Bézier bậc hai](https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Quadratic_B%C3%A9zier_curves) trong đó:
  * `n` một số nguyên tùy chọn xác định số điểm được dùng để vẽ/tạo ra đường cong
  * `(x<sub>1</sub>, y<sub>1</sub>)` là điểm bắt đầu của đường cong
  * `(x<sub>2</sub>, y<sub>2</sub>)` là điểm kết thúc của đường cong
  * `(x, y)` biểu thị điểm điều khiển của đường cong Bézier (bậc hai)

Một `*component*` là một phần tử đồ họa thường được tạo bằng các phần tử cơ bản như `\line`, `\oval`, `\circle`, `\vector` v.v.—xem [sổ tay tham khảo không chính thức của LaTeX2e](https://latexref.xyz/picture.html) hoặc [Giới thiệu về LaTeX2ε không quá ngắn](https://tobi.oetiker.ch/lshort/lshort.pdf) (Chương 5) để biết chi tiết về các phần tử cơ bản có sẵn.

**Lưu ý**: Gói [`pict2e` gói](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/pict2e/pict2e.pdf) mở rộng `picture` môi trường gốc để cung cấp một số lệnh vẽ đường cong Bézier: `\bezier`, `\qbezier`, `\cbezier` và `\qbeziermax`.

### Hiểu về độ lệch và gốc tọa độ

Trong các ví dụ sau, `\put` lệnh được dùng để vẽ các chấm màu biểu thị các tọa độ (vị trí) quan trọng trong đồ họa. Cả hai ví dụ đều dùng lệnh `\fbox` để vẽ một đường viền quanh hộp mà LaTeX tạo ra để chứa bức hình của chúng ta, cho thấy *khung bao* của đồ họa.

**Ví dụ 1: Sử dụng gốc mặc định**

```latex
\documentclass{article}
\usepackage[pdftex]{pict2e}
\usepackage[dvipsnames]{xcolor}
\begin{document}
\setlength{\unitlength}{1cm}
\setlength{\fboxsep}{0pt}

Đây là bức hình của tôi\fbox{%
\begin{picture}(3,3)
\put(0,0){{\color{blue}\circle*{0.25}}\hbox{\kern3pt \texttt{(0,0)}}}
\put(3,3){{\color{red}\circle*{0.25}}\hbox{\kern3pt \texttt{(3,3)}}}
\end{picture}}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=understanding+picture+dimensions+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bpdftex%5D%7Bpict2e%7D%0A%5Cusepackage%5Bdvipsnames%5D%7Bxcolor%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cunitlength%7D%7B1cm%7D%0A%5Csetlength%7B%5Cfboxsep%7D%7B0pt%7D%0A%0AThis+is+my+picture%5Cfbox%7B%25%0A%5Cbegin%7Bpicture%7D%283%2C3%29%0A%5Cput%280%2C0%29%7B%7B%5Ccolor%7Bblue%7D%5Ccircle%2A%7B0.25%7D%7D%5Chbox%7B%5Ckern3pt+%5Ctexttt%7B%280%2C0%29%7D%7D%7D%0A%5Cput%283%2C3%29%7B%7B%5Ccolor%7Bred%7D%5Ccircle%2A%7B0.25%7D%7D%5Chbox%7B%5Ckern3pt+%5Ctexttt%7B%283%2C3%29%7D%7D%7D%0A%5Cend%7Bpicture%7D%7D%0A%5Cend%7Bdocument%7D)

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

![kích thước của môi trường picture của LaTeX](/files/4986fd087241cc1489f2edb217b7342ea0263060)

Tính năng `\fbox` lệnh vẽ một đường viền quanh khung bao của đồ họa, cho thấy khoảng trống (diện tích) được LaTeX dành ra:

* chiều rộng bức hình = `width` × `\unitlength` = 3 × 1cm = 3cm.
* chiều cao bức hình = `chiều cao` × `\unitlength` = 3 × 1cm = 3cm.

Ví dụ đầu tiên cho thấy gốc tọa độ, `(0,0)`, nằm tại điểm mà lệnh `\begin{picture}` được thực thi, ngay sau dòng chữ “Đây là bức hình của tôi”. Ngoài ra, góc trên bên phải nằm ở vị trí `(3,3)`, còn `(width,height)` các giá trị được cung cấp cho `\begin{picture}(3,3)`.

**Ví dụ 2: Dịch gốc tọa độ đi (1,1)**

```latex
\documentclass{article}
\usepackage[pdftex]{pict2e}
\usepackage[dvipsnames]{xcolor}
\begin{document}
\setlength{\unitlength}{1cm}
\setlength{\fboxsep}{0pt}

Đây là bức hình của tôi\fbox{%
\begin{picture}(3,3)(1,1)
\put(0,0){{\color{blue}\circle*{0.25}}\hbox{\kern3pt\texttt{(0,0)}}}
\put(1,1){{\color{orange}\circle*{0.25}}\hbox{\kern3pt\texttt{(1,1)}}}
\put(3,3){{\color{red}\circle*{0.25}}\hbox{\kern3pt\texttt{(3,3)}}}
\put(4,4){{\color{black}\circle*{0.25}}\hbox{\kern3pt\texttt{(4,4)}}}
\end{picture}}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=understanding+picture+dimensions+example+2\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bpdftex%5D%7Bpict2e%7D%0A%5Cusepackage%5Bdvipsnames%5D%7Bxcolor%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cunitlength%7D%7B1cm%7D%0A%5Csetlength%7B%5Cfboxsep%7D%7B0pt%7D%0A%0AThis+is+my+picture%5Cfbox%7B%25%0A%5Cbegin%7Bpicture%7D%283%2C3%29%281%2C1%29%0A%5Cput%280%2C0%29%7B%7B%5Ccolor%7Bblue%7D%5Ccircle%2A%7B0.25%7D%7D%5Chbox%7B%5Ckern3pt%5Ctexttt%7B%280%2C0%29%7D%7D%7D%0A%5Cput%281%2C1%29%7B%7B%5Ccolor%7Borange%7D%5Ccircle%2A%7B0.25%7D%7D%5Chbox%7B%5Ckern3pt%5Ctexttt%7B%281%2C1%29%7D%7D%7D%0A%5Cput%283%2C3%29%7B%7B%5Ccolor%7Bred%7D%5Ccircle%2A%7B0.25%7D%7D%5Chbox%7B%5Ckern3pt%5Ctexttt%7B%283%2C3%29%7D%7D%7D%0A%5Cput%284%2C4%29%7B%7B%5Ccolor%7Bblack%7D%5Ccircle%2A%7B0.25%7D%7D%5Chbox%7B%5Ckern3pt%5Ctexttt%7B%284%2C4%29%7D%7D%7D%0A%5Cend%7Bpicture%7D%7D%0A%5Cend%7Bdocument%7D)

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

![kích thước của môi trường picture của LaTeX](/files/ac88a0a827d8d692733acccc5b67a57393952e03)

Ví dụ thứ hai cho thấy tác động của việc dịch gốc tọa độ và làm nổi bật một số điểm chính:

* đường viền được tạo bởi `\fbox` cho thấy rằng khung bao của đồ họa, tức chiều rộng và chiều cao của hộp do LaTeX tạo ra, là *không bị ảnh hưởng* bởi việc dịch gốc tọa độ: nó vẫn được xác định bởi `(width,height)` các giá trị được cung cấp cho `\begin{picture}(3,3)(1,1)`
  * chiều rộng bức hình = `width` × `\unitlength` = 3 × 1cm = 3cm
  * chiều cao bức hình = `chiều cao` × `\unitlength` = 3 × 1cm = 3cm
* các phần tử vẽ không bị giới hạn (cắt bớt) trong vùng (kích thước khung bao) do LaTeX tạo ra. Ví dụ, chấm xanh và `(0,0)` tọa độ `\fbox`được vẽ bên ngoài đường biên do
  * tạo ra, điều này cho biết khung bao.
* gốc tọa độ, `(0,0)`, là *không còn* nằm ngay sau dòng chữ “Đây là bức hình của tôi”, tại điểm lệnh `\begin{picture}` được thực thi: giờ đây gốc tọa độ đã được dịch sang trái 1 đơn vị và xuống dưới 1 đơn vị
* góc trên bên phải giờ nằm ở vị trí `(4,4)`

## Các ví dụ về môi trường picture

### Các ví dụ từ sổ tay tham khảo không chính thức của LaTeX2e

Tính năng [sổ tay tham khảo không chính thức của LaTeX2e](https://latexref.xyz/picture.html) chứa một số `picture` ví dụ về môi trường, một số được sao chép ở đây cùng với các liên kết mở chúng trong Overleaf, cho phép bạn chỉnh sửa và khám phá mã.

#### Ví dụ 1: lệnh \vector

```latex
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\setlength{\unitlength}{1cm}
\begin{picture}(6,6)      % khung hình sẽ rộng 6cm và cao 6cm
  \put(0,0){\vector(2,1){4}}  % cứ mỗi 2 sang phải thì vectơ này đi lên 1
    \put(2,1){\makebox(0,0)[l]{\ first leg}}
  \put(4,2){\vector(1,2){2}}
    \put(5,4){\makebox(0,0)[l]{\ second leg}}
  \put(0,0){\vector(1,1){6}}
    \put(3,3){\makebox(0,0)[r]{tổng\ }}
\end{picture}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=picture+environment+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bpdftex%5D%7Bpict2e%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cunitlength%7D%7B1cm%7D%0A%5Cbegin%7Bpicture%7D%286%2C6%29++++++%25+picture+box+will+be+6cm+wide+by+6cm+tall%0A++%5Cput%280%2C0%29%7B%5Cvector%282%2C1%29%7B4%7D%7D++%25+for+every+2+over+this+vector+goes+1+up%0A++++%5Cput%282%2C1%29%7B%5Cmakebox%280%2C0%29%5Bl%5D%7B%5C+first+leg%7D%7D%0A++%5Cput%284%2C2%29%7B%5Cvector%281%2C2%29%7B2%7D%7D%0A++++%5Cput%285%2C4%29%7B%5Cmakebox%280%2C0%29%5Bl%5D%7B%5C+second+leg%7D%7D++%0A++%5Cput%280%2C0%29%7B%5Cvector%281%2C1%29%7B6%7D%7D%0A++++%5Cput%283%2C3%29%7B%5Cmakebox%280%2C0%29%5Br%5D%7Bsum%5C+%7D%7D++%0A%5Cend%7Bpicture%7D%0A%5Cend%7Bdocument%7D)

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

![ví dụ môi trường picture](/files/918e2f33c3e7aff382fa0cd4ab789d3820a43ee4)

#### Ví dụ 2: các lệnh \qbezier, \line, \vector, \thinlines và \thicklines

Lưu ý cách `\qbezier` lệnh *không* được dùng bên trong `\put{...}` trong khi các lệnh nguyên thủy khác, như `\line`, `\vector` *đang* được dùng bên trong `\put{...}`.

```latex
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\setlength{\unitlength}{1cm}
\begin{picture}(8,4)
  \thinlines % Bắt đầu với các đường mảnh
  \put(0,0){\vector(1,0){8}}  % trục x
  \put(0,0){\vector(0,1){4}}  % trục y
  \put(2,0){\line(0,1){3}}    % cạnh trái
  \put(4,0){\line(0,1){3.5}}  % cạnh phải
  \thicklines % Dùng các đường dày hơn cho các lệnh \qbezier
  \qbezier(2,3)(2.5,2.9)(3,3.25)
  \qbezier(3,3.25)(3.5,3.6)(4,3.5)
  \thinlines % Quay lại dùng các đường mảnh
  \put(2,3){\line(4,1){2}}
  \put(4.5,2.5){\framebox{Quy tắc hình thang}}
\end{picture}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=qbezier+picture+environment+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bpdftex%5D%7Bpict2e%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cunitlength%7D%7B1cm%7D%0A%5Cbegin%7Bpicture%7D%288%2C4%29%0A++%5Cthinlines+%25+Start+with+thin+lines%0A++%5Cput%280%2C0%29%7B%5Cvector%281%2C0%29%7B8%7D%7D++%25+x+axis%0A++%5Cput%280%2C0%29%7B%5Cvector%280%2C1%29%7B4%7D%7D++%25+y+axis%0A++%5Cput%282%2C0%29%7B%5Cline%280%2C1%29%7B3%7D%7D++++%25+left+side%0A++%5Cput%284%2C0%29%7B%5Cline%280%2C1%29%7B3.5%7D%7D++%25+right+side%0A++%5Cthicklines+%25+Use+thicker+lines+for+the+%5Cqbezier+commands%0A++%5Cqbezier%282%2C3%29%282.5%2C2.9%29%283%2C3.25%29%0A++%5Cqbezier%283%2C3.25%29%283.5%2C3.6%29%284%2C3.5%29%0A++%5Cthinlines+%25+Back+to+using+thin+lines%0A++%5Cput%282%2C3%29%7B%5Cline%284%2C1%29%7B2%7D%7D%0A++%5Cput%284.5%2C2.5%29%7B%5Cframebox%7BTrapezoidal+Rule%7D%7D%0A%5Cend%7Bpicture%7D%0A%5Cend%7Bdocument%7D)

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

![Ví dụ của môi trường picture trong LaTeX](/files/771fdecfb4a7febb1802f6b28d33b17a4c6695e4)

#### Ví dụ 3: các lệnh \multiput và \linethickness

```latex
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\setlength{\unitlength}{1cm}
\thicklines
\begin{picture}(10,10)
  \linethickness{0.05mm}
  \multiput(0,0)(1,0){10}{\line(0,1){10}}
  \multiput(0,0)(0,1){10}{\line(1,0){10}}
  \linethickness{0.5mm}
  \multiput(0,0)(5,0){3}{\line(0,1){10}}
  \multiput(0,0)(0,5){3}{\line(1,0){10}}
\end{picture}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=multiput+command+picture+environment+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bpdftex%5D%7Bpict2e%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cunitlength%7D%7B1cm%7D%0A%5Cthicklines%0A%5Cbegin%7Bpicture%7D%2810%2C10%29%0A++%5Clinethickness%7B0.05mm%7D%0A++%5Cmultiput%280%2C0%29%281%2C0%29%7B10%7D%7B%5Cline%280%2C1%29%7B10%7D%7D+%0A++%5Cmultiput%280%2C0%29%280%2C1%29%7B10%7D%7B%5Cline%281%2C0%29%7B10%7D%7D%0A++%5Clinethickness%7B0.5mm%7D%0A++%5Cmultiput%280%2C0%29%285%2C0%29%7B3%7D%7B%5Cline%280%2C1%29%7B10%7D%7D%0A++%5Cmultiput%280%2C0%29%280%2C5%29%7B3%7D%7B%5Cline%281%2C0%29%7B10%7D%7D%0A%5Cend%7Bpicture%7D%0A%5Cend%7Bdocument%7D)

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

![ví dụ lệnh \multiput trong môi trường picture của LaTeX](/files/954f5e635c9888eb1a6893987d246beb4c0e8e56)

### Các ví dụ khác

#### Một đường cong Bézier cơ bản

Ví dụ sau sử dụng `\qbezier` lệnh để vẽ một đường cong Bézier:

```latex
\qbezier(1,1)(5,5)(9,0.5)
```

Lưu ý những điểm sau:

* trang `\qbezier` lệnh không được dùng bên trong một `\put` lệnh
* điểm bắt đầu của đường cong Bézier là `(1,1)`
* điểm kết thúc của đường cong Bézier là `(9,0.5)`
* điểm điều khiển của đường cong Bézier là `(5,5)`
* chúng ta không dùng số nguyên tùy chọn xác định số điểm được dùng để vẽ/tạo ra đường cong Bézier

```latex
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\setlength{\unitlength}{0.8cm}
\begin{picture}(10,5)
\thicklines
\qbezier(1,1)(5,5)(9,0.5)
\put(2,1){{Bézier curve}}
\end{picture}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=multiput+command+picture+environment+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bpdftex%5D%7Bpict2e%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cunitlength%7D%7B0.8cm%7D%0A%5Cbegin%7Bpicture%7D%2810%2C5%29%0A%5Cthicklines%0A%5Cqbezier%281%2C1%29%285%2C5%29%289%2C0.5%29%0A%5Cput%282%2C1%29%7B%7BB%C3%A9zier+curve%7D%7D%0A%5Cend%7Bpicture%7D%0A%5Cend%7Bdocument%7D)

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

![Vẽ một đường cong Bézier bằng LaTeX](/files/22cf26006be44cd134f4e69674c2dfbe17b67706)

#### Hình bầu dục, đường thẳng và đường tròn

Ví dụ sau minh họa các `\line`, `\circle` và `\oval` lệnh và—lưu ý cách chúng *đang* đều được dùng bên trong `\put{...}` lệnh:

```latex
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\setlength{\unitlength}{1cm}
\thicklines
\begin{picture}(10,6)
\put(2,2.2){\line(1,0){6}}
\put(2,2.2){\circle{2}}
\put(6,2.2){\oval(4,2)[r]}
\end{picture}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=picture+environment+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bpdftex%5D%7Bpict2e%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cunitlength%7D%7B1cm%7D%0A%5Cthicklines%0A%5Cbegin%7Bpicture%7D%2810%2C6%29%0A%5Cput%282%2C2.2%29%7B%5Cline%281%2C0%29%7B6%7D%7D%0A%5Cput%282%2C2.2%29%7B%5Ccircle%7B2%7D%7D%0A%5Cput%286%2C2.2%29%7B%5Coval%284%2C2%29%5Br%5D%7D%0A%5Cend%7Bpicture%7D%0A%5Cend%7Bdocument%7D)

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

![ví dụ môi trường picture của LaTeX](/files/655ea1bcfd293700f14af0848f5d385d71252872)

Dưới đây là mô tả các lệnh:

* `\put(2,2.2){\line(1,0){6}}`: vẽ một đường thẳng `6` đơn vị dài bằng cách sử dụng “vectơ hướng” `(1,0)`
* `\put(6,2.2){\oval(4,2)[r]}`: vẽ một hình bầu dục có tâm tại điểm `(4,2)`. Tham số `[r]` là tùy chọn, bạn có thể dùng `r`, `l`, `t` và `b` để hiển thị phần bên phải, bên trái, phía trên hoặc phía dưới của hình bầu dục.
* `\put(2,2.2){\circle{2}}`: vẽ một hình tròn có tâm tại điểm `(2,2.2)` và có đường kính là `2`.

#### Kết hợp đường thẳng, hình tròn và văn bản

Các phần tử cơ bản khác nhau có thể được kết hợp để tạo ra các bức hình phức tạp hơn. Trong ví dụ này, một số đường thẳng và hình tròn được kết hợp để tạo thành một bức hình, cùng với văn bản để gắn nhãn các điểm:

```latex
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\setlength{\unitlength}{0.8cm}
\begin{picture}(12,4)
\thicklines
\put(8,3.3){{\footnotesize $3$-simplex}}
\put(9,3){\circle*{0.1}}
\put(8.3,2.9){$a_2$}
\put(8,1){\circle*{0.1}}
\put(7.7,0.5){$a_0$}
\put(10,1){\circle*{0.1}}
\put(9.7,0.5){$a_1$}
\put(11,1.66){\circle*{0.1}}
\put(11.1,1.5){$a_3$}
\put(9,3){\line(3,-2){2}}
\put(10,1){\line(3,2){1}}
\put(8,1){\line(1,0){2}}
\put(8,1){\line(1,2){1}}
\put(10,1){\line(-1,2){1}}
\end{picture}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=understanding+picture+dimensions+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bpdftex%5D%7Bpict2e%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cunitlength%7D%7B0.8cm%7D%0A%5Cbegin%7Bpicture%7D%2812%2C4%29%0A%5Cthicklines%0A%5Cput%288%2C3.3%29%7B%7B%5Cfootnotesize+%243%24-simplex%7D%7D%0A%5Cput%289%2C3%29%7B%5Ccircle%2A%7B0.1%7D%7D%0A%5Cput%288.3%2C2.9%29%7B%24a_2%24%7D%0A%5Cput%288%2C1%29%7B%5Ccircle%2A%7B0.1%7D%7D%0A%5Cput%287.7%2C0.5%29%7B%24a_0%24%7D%0A%5Cput%2810%2C1%29%7B%5Ccircle%2A%7B0.1%7D%7D%0A%5Cput%289.7%2C0.5%29%7B%24a_1%24%7D%0A%5Cput%2811%2C1.66%29%7B%5Ccircle%2A%7B0.1%7D%7D%0A%5Cput%2811.1%2C1.5%29%7B%24a_3%24%7D%0A%5Cput%289%2C3%29%7B%5Cline%283%2C-2%29%7B2%7D%7D%0A%5Cput%2810%2C1%29%7B%5Cline%283%2C2%29%7B1%7D%7D%0A%5Cput%288%2C1%29%7B%5Cline%281%2C0%29%7B2%7D%7D%0A%5Cput%288%2C1%29%7B%5Cline%281%2C2%29%7B1%7D%7D%0A%5Cput%2810%2C1%29%7B%5Cline%28-1%2C2%29%7B1%7D%7D%0A%5Cend%7Bpicture%7D%0A%5Cend%7Bdocument%7D)

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

![ví dụ môi trường picture của LaTeX](/files/261c572711253fd8e954d014e5993a56ab445b78)

Sau đây là tóm tắt một số lệnh đã dùng:

* `\thicklines`: điều này làm tăng độ dày của các đường thẳng. Lệnh `\thinlines` có tác dụng ngược lại.
* `\put(8,3.3){{\footnotesize $3$-simplex}}`: văn bản “3-simplex” được chèn tại điểm `(8,3.3)`, cỡ chữ được đặt thành `\footnotesize`. Cùng một lệnh được dùng để gắn nhãn cho từng điểm.
* `\put(9,3){\circle*{0.1}}`: lệnh này vẽ một hình tròn tô đầy, có tâm tại `(9,3)` với đường kính nhỏ là `0.1` (đơn vị vẽ) để có thể dùng nó như một điểm.
* `\put(10,1){\line(3,2){1}}`: tạo một đường thẳng bắt đầu tại `(10,1)` và được vẽ theo hướng của `(3,2)` với độ dài là 1 (đơn vị vẽ).

#### Sử dụng mũi tên

Mũi tên cũng có thể được dùng bên trong một `picture` môi trường, vì vậy đây là một ví dụ thứ hai:

```latex
\documentclass{article}
\usepackage[pdftex]{pict2e}
\begin{document}
\setlength{\unitlength}{0.20mm}
\begin{picture}(400,250)
\put(75,10){\line(1,0){130}}
\put(75,50){\line(1,0){130}}
\put(75,200){\line(1,0){130}}
\put(120,200){\vector(0,-1){150}}
\put(190,200){\vector(0,-1){190}}
\put(97,120){$\alpha$}
\put(170,120){$\beta$}
\put(220,195){upper state}
\put(220,45){lower state 1}
\put(220,5){lower state 2}
\end{picture}
\end{document}
```

[Mở ví dụ này trong Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+of+arrows+in+LaTeX+picture+environment\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bpdftex%5D%7Bpict2e%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cunitlength%7D%7B0.20mm%7D%0A%5Cbegin%7Bpicture%7D%28400%2C250%29%0A%5Cput%2875%2C10%29%7B%5Cline%281%2C0%29%7B130%7D%7D%0A%5Cput%2875%2C50%29%7B%5Cline%281%2C0%29%7B130%7D%7D%0A%5Cput%2875%2C200%29%7B%5Cline%281%2C0%29%7B130%7D%7D%0A%5Cput%28120%2C200%29%7B%5Cvector%280%2C-1%29%7B150%7D%7D%0A%5Cput%28190%2C200%29%7B%5Cvector%280%2C-1%29%7B190%7D%7D%0A%5Cput%2897%2C120%29%7B%24%5Calpha%24%7D%0A%5Cput%28170%2C120%29%7B%24%5Cbeta%24%7D%0A%5Cput%28220%2C195%29%7Bupper+state%7D%0A%5Cput%28220%2C45%29%7Blower+state+1%7D%0A%5Cput%28220%2C5%29%7Blower+state+2%7D%0A%5Cend%7Bpicture%7D%0A%5Cend%7Bdocument%7D)

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

![Ví dụ về mũi tên trong môi trường picture của LaTeX](/files/be912d060da4259a78be4923c6b92bb526eb9684)

Tính năng `\vector` lệnh sử dụng cú pháp giống như `\line`:

* `\put(120,200){\vector(0,-1){150}}`: vẽ một vectơ có điểm bắt đầu là `(120,200)`, độ dài là `150` và hướng vẽ là `(0,-1)`.

## Đọc thêm

Để biết thêm thông tin, xem các nguồn sau:

* [sổ tay tham khảo không chính thức của LaTeX2e](https://latexref.xyz/picture.html)
* [Giới thiệu về LaTeX2ε không quá ngắn](https://tobi.oetiker.ch/lshort/lshort.pdf) (xem Chương 5)
* [Wikibooks](https://en.wikibooks.org/wiki/LaTeX/Picture)
* [các câu hỏi được gắn thẻ `picture-mode` trên tex.stackexchange](https://tex.stackexchange.com/questions/tagged/picture-mode)
* [`pict2e` tài liệu gói](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/pict2e/pict2e.pdf)
* [Gói TikZ](/latex/vi/hinh-va-bang/05-tikz-package.md)
* [gói Pgfplots](/latex/vi/theo-linh-vuc/08-pgfplots-package.md)
* [Định vị hình ảnh và bảng](/latex/vi/hinh-va-bang/02-positioning-images-and-tables.md)
* [Danh sách bảng biểu và hình vẽ](/latex/vi/hinh-va-bang/03-lists-of-tables-and-figures.md)


---

# 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/04-picture-environment.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.
