> 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/kien-thuc-co-ban-ve-latex/04-lists.md).

# Danh sách

## Ba cách chèn danh sách trong Overleaf

Overleaf cung cấp 3 cách để tạo danh sách bằng LaTeX:

1. Sử dụng **Chèn danh sách gạch đầu dòng** (![Image of the menu icon for insert a bulleted list in Overleaf](/files/8076560784d3b3e3f820a2a0bf014b958e812fea)) hoặc **Chèn danh sách đánh số** (![Image of the menu icon for insert a numbered list in Overleaf](/files/c4aa7775446ead7c8afe5eea5850a3e5c43893a3)) trên thanh công cụ của trình soạn thảo để chèn danh sách vào **Trình soạn thảo trực quan** hoặc **Trình soạn thảo mã**.
2. [Dán một danh sách đã được định dạng vào **Trình soạn thảo trực quan**](/latex/vi/co-so-tri-thuc/075-how-to-paste-formatted-content-into-overleaf.md#pasteformattedlist).
3. Viết mã LaTeX của riêng bạn bằng **Trình soạn thảo mã**.

Tùy chọn 1 và 2 được thiết kế để tự động tạo mã LaTeX cần thiết cho việc dàn trang danh sách. Tuy nhiên, đối với những ai muốn viết mã LaTeX của riêng mình, tùy chọn 3 có thể là lựa chọn được ưu tiên. Nó mang lại tính linh hoạt cao nhất và là trọng tâm chính của bài viết này.

## Giới thiệu

Bài viết này cung cấp phần giới thiệu về việc dàn trang và tùy chỉnh nhiều kiểu danh sách khác nhau trong LaTeX:

* trang `itemize` môi trường để tạo danh sách gạch đầu dòng (không thứ tự)
* trang `enumerate` môi trường để tạo danh sách đánh số (có thứ tự)
* trang `mô tả` môi trường để tạo danh sách mô tả

Dàn trang danh sách là một chủ đề lớn vì các danh sách LaTeX *cực kỳ* có thể cấu hình, cho phép tạo ra vô số kiểu và cấu trúc danh sách. Chúng ta sẽ khảo sát và minh họa một số phương pháp bạn có thể dùng để [cấu hình và tùy chỉnh danh sách của bạn](#customizing-lists).

## Ví dụ về các danh sách cơ bản

### Môi trường itemize cho danh sách gạch đầu dòng (không thứ tự)

Danh sách không thứ tự (gạch đầu dòng) được tạo bởi `itemize` môi trường, trong đó mỗi mục danh sách bắt đầu bằng việc dùng `\item` lệnh, lệnh này cũng tạo ra ký hiệu gạch đầu dòng.

```latex
Danh sách rất dễ tạo:
\begin{itemize}
  \item Các mục danh sách bắt đầu bằng lệnh \verb|\item|.
  \item Các mục riêng lẻ được biểu thị bằng một chấm đen, gọi là bullet.
  \item Văn bản trong các mục có thể dài bất kỳ.
\end{itemize}
```

[Mở ví dụ này trong Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+unordered+list+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0ALists+are+easy+to+create%3A%0A%5Cbegin%7Bitemize%7D%0A++%5Citem+List+entries+start+with+the+%5Cverb%7C%5Citem%7C+command.%0A++%5Citem+Individual+entries+are+indicated+with+a+black+dot%2C+a+so-called+bullet.%0A++%5Citem+The+text+in+the+entries+may+be+of+any+length.%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bdocument%7D)

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

![List1bOLV2.png](/files/20b76f9cd32340a82de4d48d27e335046b1a4d99)

### Môi trường enumerate cho danh sách đánh số (có thứ tự)

Danh sách đánh số (có thứ tự) có cùng cú pháp nhưng dùng `enumerate` môi trường: mỗi mục phải được đặt trước bởi chuỗi điều khiển `\item`, chuỗi này sẽ tự động tạo số để gắn nhãn cho mục. Các số này bắt đầu từ 1 mỗi khi sử dụng `enumerate` môi trường — lưu ý rằng hành vi đánh số mặc định của LaTeX này có thể được thay đổi/kiểm soát qua [`enumitem` gói](https://ctan.org/pkg/enumitem).

```latex
Danh sách đánh số (có thứ tự) rất dễ tạo:
\begin{enumerate}
  \item Các mục được đánh số tự động.
  \item Các số bắt đầu từ 1 với mỗi lần dùng môi trường \texttt{enumerate}.
  \item Một mục khác trong danh sách
\end{enumerate}
```

[Mở ví dụ này trong Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+ordered+list+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0ANumbered+%28ordered%29+lists+are+easy+to+create%3A%0A%5Cbegin%7Benumerate%7D%0A++%5Citem+Items+are+numbered+automatically.%0A++%5Citem+The+numbers+start+at+1+with+each+use+of+the+%5Ctexttt%7Benumerate%7D+environment.%0A++%5Citem+Another+entry+in+the+list%0A%5Cend%7Benumerate%7D%0A%5Cend%7Bdocument%7D)

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

![List2OLV2.png](/files/178be0574952c6ca3463aab38dbadddbdf2d8fcd)

### Môi trường description

Ví dụ sau minh họa các `mô tả` môi trường. Nhãn (tùy chọn) cho mỗi mục được đặt trong dấu ngoặc vuông sau `\item` lệnh:

```latex
\item[label text] Nội dung mô tả của bạn ở đây...
```

Chúng ta cũng dùng `blindtext` gói để tạo một số văn bản tiếng Anh giả ở mục thứ ba. Để có tiếng Anh, ta cần dùng `babel` gói với tùy chọn ngôn ngữ `[english]`:

```latex
\usepackage[english]{babel}
```

Đây là ví dụ:

```latex
\documentclass{article}
\usepackage[english]{babel} % Để lấy văn bản tiếng Anh với gói blindtext
\usepackage{blindtext}
\begin{document}

\begin{description}
   \item Đây là một mục \textit{không có} nhãn.
   \item[Something short] Một mô tả ngắn trên một dòng.
   \item[Something long] Một mô tả dài hơn nhiều. \blindtext[1]
\end{description}
\end{document}
```

[Mở ví dụ này trong Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+description+list+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Benglish%5D%7Bbabel%7D+%25+To+obtain+English+text+with+the+blindtext+package%0A%5Cusepackage%7Bblindtext%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cbegin%7Bdescription%7D%0A+++%5Citem+This+is+an+entry+%5Ctextit%7Bwithout%7D+a+label.%0A+++%5Citem%5BSomething+short%5D+A+short+one-line+description.%0A+++%5Citem%5BSomething+long%5D+A+much+longer+description.+%5Cblindtext%5B1%5D%0A%5Cend%7Bdescription%7D%0A%5Cend%7Bdocument%7D)

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

![Descriptionlist2.png](/files/60f998efc7482c79aef524840716a97f6b2a03fd)

## Thay đổi nhãn của các mục riêng lẻ

Như được minh họa trong `mô tả` ví dụ môi trường, lệnh `\item` nhận một tham số tùy chọn, trong dấu ngoặc vuông. Bạn có thể dùng tính năng này trong `itemize` và `enumerate` các môi trường để thay đổi nhãn mặc định của từng mục trong danh sách của bạn:

```latex
\item[label text] Nội dung mục của bạn ở đây...
```

Tính năng `label text` sẽ được dùng để tạo nhãn cho mục này.

```latex
Thay đổi nhãn bằng \verb|\item[label text]| trong môi trường \texttt{itemize}
\begin{itemize}
  \item Đây là điểm đầu tiên của tôi
  \item Một điểm khác tôi muốn nêu
  \item[!] Một điểm để thốt lên điều gì đó!
  \item[$\blacksquare$] Trình bày vấn đề cho đàng hoàng.
  \item[NOTE] Mục này không có bullet
  \item[] Một nhãn trống?
\end{itemize}

\vspace{10pt}

Thay đổi nhãn bằng \verb|\item[label text]| trong môi trường \texttt{enumerate}
\begin{enumerate}
  \item Đây là điểm đầu tiên của tôi
  \item Một điểm khác tôi muốn nêu
  \item[!] Một điểm để thốt lên điều gì đó!
  \item[$\blacksquare$] Trình bày vấn đề cho đàng hoàng.
  \item[NOTE] Mục này không có bullet
  \item[] Một nhãn trống?
\end{enumerate}
```

[Mở ví dụ này trong Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Changing+list+labels\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bamssymb%7D%25+to+access+%24%5Cblacksquare%24%0A%5Cbegin%7Bdocument%7D%0AChange+the+labels+using+%5Cverb%7C%5Citem%5Blabel+text%5D%7C+in+an+%5Ctexttt%7Bitemize%7D+environment%0A%5Cbegin%7Bitemize%7D%0A++%5Citem+This+is+my+first+point%0A++%5Citem+Another+point+I+want+to+make+%0A++%5Citem%5B%21%5D+A+point+to+exclaim+something%21%0A++%5Citem%5B%24%5Cblacksquare%24%5D+Make+the+point+fair+and+square.%0A++%5Citem%5BNOTE%5D+This+entry+has+no+bullet%0A++%5Citem%5B%5D+A+blank+label%3F%0A%5Cend%7Bitemize%7D%0A%0A%5Cvspace%7B10pt%7D%0A%0AChange+the+labels+using+%5Cverb%7C%5Citem%5Blabel+text%5D%7C+in+an+%5Ctexttt%7Benumerate%7D+environment%0A%5Cbegin%7Benumerate%7D%0A++%5Citem+This+is+my+first+point%0A++%5Citem+Another+point+I+want+to+make+%0A++%5Citem%5B%21%5D+A+point+to+exclaim+something%21%0A++%5Citem%5B%24%5Cblacksquare%24%5D+Make+the+point+fair+and+square.%0A++%5Citem%5BNOTE%5D+This+entry+has+no+bullet%0A++%5Citem%5B%5D+A+blank+label%3F%0A%5Cend%7Benumerate%7D%0A%5Cend%7Bdocument%7D)

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

![ChangeBullets.png](/files/9b69f3a1294107445ee49afbc40c96c86317e2f5)

## Danh sách lồng nhau

Trong LaTeX, bạn có thể chèn một danh sách bên trong một danh sách khác. Các kiểu danh sách ở trên có thể được lồng vào nhau, hoặc trộn lẫn hoặc cùng một kiểu, với độ sâu tối đa 4 cấp.

```latex
\begin{enumerate}
   \item Các nhãn gồm các số liên tiếp
   \begin{itemize}
     \item Các mục riêng lẻ được biểu thị bằng một chấm đen, gọi là bullet
     \item Văn bản trong các mục có thể dài bất kỳ
     \begin{description}
     \item[Note:] Tôi muốn mô tả điều gì đó ở đây
     \item[Caveat!] Và đưa ra cảnh báo ở đây
     \end{description}
   \end{itemize}
   \item Các số bắt đầu từ 1 với mỗi lần dùng môi trường \texttt{enumerate}
\end{enumerate}
```

[Mở ví dụ này trong Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+nested+list+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Benumerate%7D%0A+++%5Citem+The+labels+consists+of+sequential+numbers%0A+++%5Cbegin%7Bitemize%7D%0A+++++%5Citem+The+individual+entries+are+indicated+with+a+black+dot%2C+a+so-called+bullet%0A+++++%5Citem+The+text+in+the+entries+may+be+of+any+length%0A+++++%5Cbegin%7Bdescription%7D%0A+++++%5Citem%5BNote%3A%5D+I+would+like+to+describe+something+here%0A+++++%5Citem%5BCaveat%21%5D+And+give+a+warning+here%0A+++++%5Cend%7Bdescription%7D%0A+++%5Cend%7Bitemize%7D%0A+++%5Citem+The+numbers+starts+at+1+with+each+use+of+the+%5Ctexttt%7Benumerate%7D+environment%0A%5Cend%7Benumerate%7D%0A%5Cend%7Bdocument%7D)

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

![List3bOLV2.png](/files/2df7ff148ea00334d44c455bad112a422ffe5e45)

### Danh sách lồng nhau: kiểu nhãn

Kiểu nhãn của các mục trong danh sách lồng nhau thay đổi theo độ sâu của chúng trong danh sách. Đối với danh sách lồng `itemize` nhau, kiểu bullet thay đổi; đối với `enumerate` danh sách, định dạng số thay đổi khi độ sâu mục tăng lên. Cả hai đều bị giới hạn ở độ sâu 4 cấp.

#### Danh sách enumerate lồng nhau: định dạng số

```latex
\begin{enumerate}
   \item Mục cấp 1
   \item Mục cấp 1
   \begin{enumerate}
     \item Mục cấp 2
     \item Mục cấp 2
     \begin{enumerate}
       \item Mục cấp 3
       \item Mục cấp 3
       \begin{enumerate}
         \item Mục cấp 4
         \item Mục cấp 4
       \end{enumerate}
     \end{enumerate}
   \end{enumerate}
 \end{enumerate}
```

[Mở ví dụ này trong Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+nested+ordered+list+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Benumerate%7D%0A+++%5Citem+First+level+item%0A+++%5Citem+First+level+item%0A+++%5Cbegin%7Benumerate%7D%0A+++++%5Citem+Second+level+item%0A+++++%5Citem+Second+level+item%0A+++++%5Cbegin%7Benumerate%7D%0A+++++++%5Citem+Third+level+item%0A+++++++%5Citem+Third+level+item%0A+++++++%5Cbegin%7Benumerate%7D%0A+++++++++%5Citem+Fourth+level+item%0A+++++++++%5Citem+Fourth+level+item%0A+++++++%5Cend%7Benumerate%7D%0A+++++%5Cend%7Benumerate%7D%0A+++%5Cend%7Benumerate%7D%0A+%5Cend%7Benumerate%7D%0A%5Cend%7Bdocument%7D)

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

![List4OLV2.png](/files/5ae394590beb83292df4c79456210532bec10a31)

#### Danh sách itemize lồng nhau: kiểu bullet

Kiểu bullet thay đổi tùy theo độ sâu của các danh sách lồng nhau:

```latex
\begin{itemize}
   \item Mục cấp 1
   \item Mục cấp 1
   \begin{itemize}
     \item Mục cấp 2
     \item Mục cấp 2
     \begin{itemize}
       \item Mục cấp 3
       \item Mục cấp 3
       \begin{itemize}
         \item Mục cấp 4
         \item Mục cấp 4
       \end{itemize}
     \end{itemize}
   \end{itemize}
 \end{itemize}
```

[Mở ví dụ này trong Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Basic+nested+ordered+list+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bitemize%7D%0A+++%5Citem+First+level+item%0A+++%5Citem+First+level+item%0A+++%5Cbegin%7Bitemize%7D%0A+++++%5Citem+Second+level+item%0A+++++%5Citem+Second+level+item%0A+++++%5Cbegin%7Bitemize%7D%0A+++++++%5Citem+Third+level+item%0A+++++++%5Citem+Third+level+item%0A+++++++%5Cbegin%7Bitemize%7D%0A+++++++++%5Citem+Fourth+level+item%0A+++++++++%5Citem+Fourth+level+item%0A+++++++%5Cend%7Bitemize%7D%0A+++++%5Cend%7Bitemize%7D%0A+++%5Cend%7Bitemize%7D%0A+%5Cend%7Bitemize%7D%0A%5Cend%7Bdocument%7D)

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

![List5OLV2.png](/files/c31f55eb313efe2cf65b4d392e9a8818603300d1)

## Tùy chỉnh danh sách

Các danh sách của LaTeX rất *cao* có thể cấu hình, tạo nhiều không gian cho việc tạo ra rất nhiều kiểu danh sách tùy chỉnh khác nhau. Bạn có thể hoặc sửa đổi trực tiếp các kiểu danh sách chuẩn của LaTeX, hoặc, *tốt hơn,*&#x73;ử dụng gói [enumitem](https://ctan.org/pkg/enumitem) rất linh hoạt để thực hiện giúp bạn.

CTAN lưu trữ một số [gói liên quan đến danh sách](https://ctan.org/topic/list) có thể đáng để tìm hiểu nếu bạn có các yêu cầu tùy chỉnh cụ thể. Ngoài ra, tex.stackexchange cung cấp rất nhiều [câu hỏi liên quan đến danh sách](https://tex.stackexchange.com/questions/tagged/lists) với các câu trả lời cung cấp những hiểu biết hữu ích và các ví dụ tuyệt vời!

Chúng ta sẽ bắt đầu với một số ví dụ sửa đổi nhãn danh sách, rồi chuyển sang tùy chỉnh bố cục danh sách.

### Tùy chỉnh danh sách: thay đổi nhãn

Trước hết, chúng ta sẽ chỉ ra cách thay đổi cách gắn nhãn danh sách mà không dùng [enumitem](https://ctan.org/pkg/enumitem).

#### các lệnh tạo nhãn chuẩn

Có thể tạo các danh sách tùy chỉnh bằng cách dùng [enumitem](https://ctan.org/pkg/enumitem) gói này hoặc sửa đổi trực tiếp các danh sách chuẩn. Ở đây, chúng ta sẽ tóm tắt một số lệnh LaTeX chuẩn, biến đếm và tham số danh sách mà bạn có thể cần biết.

Bảng sau cho thấy các lệnh LaTeX được dùng để tạo nhãn ở từng cấp của `itemize` và `enumerate` các môi trường danh sách:

|         |                               |                             |
| ------- | ----------------------------- | --------------------------- |
| **Cấp** | **`enumerate`** các lệnh nhãn | **`itemize`** các lệnh nhãn |
| Cấp 1   | `\labelenumi`                 | `\labelitemi`               |
| Cấp 2   | `\labelenumii`                | `\labelitemii`              |
| Cấp 3   | `\labelenumiii`               | `\labelitemiii`             |
| Cấp 4   | `\labelenumiv`                | `\labelitemiv`              |

#### Các biến đếm cho enumerate

Tính năng `enumerate` môi trường danh sách cũng dùng bốn *bộ đếm* biến theo dõi giá trị nhãn hiện tại cho mỗi cấp:

|         |                          |
| ------- | ------------------------ |
| **Cấp** | **`enumerate`** biến đếm |
| Cấp 1   | `enumi`                  |
| Cấp 2   | `enumii`                 |
| Cấp 3   | `enumiii`                |
| Cấp 4   | `enumiv`                 |

#### Ví dụ: tùy chỉnh nhãn của danh sách enumerate

Bạn có thể cấu hình cách gắn nhãn mặc định của LaTeX bằng cách dùng `\renewcommand` để định nghĩa lại các lệnh tạo nhãn và, đối với `enumerate` môi trường, bạn cũng có thể dùng biến đếm thích hợp.

Sau đây là một số ví dụ thực hiện điều này mà không dùng `enumitem` gói.

**Ví dụ thực tế**

```latex
\documentclass{article}
\begin{document}
\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}}
\renewcommand{\labelenumiii}{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}}
\renewcommand{\labelenumiv}{\arabic{enumi}.\arabic{enumii}.\arabic{enumiii}.\arabic{enumiv}}

\begin{enumerate}
\item Một
\item Hai
\item Ba
\begin{enumerate}
    \item Ba chấm một
    \begin{enumerate}
    \item Ba chấm một, chấm một
        \begin{enumerate}
        \item Ba chấm một, chấm một, chấm một
        \item Ba chấm một, chấm một, chấm hai
        \end{enumerate}
    \end{enumerate}
\end{enumerate}
\item Bốn
\item Năm
\end{enumerate}

\end{document}
```

[Mở ví dụ này trong Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Configuring+list+layout\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Crenewcommand%7B%5Clabelenumii%7D%7B%5Carabic%7Benumi%7D.%5Carabic%7Benumii%7D%7D%0A%5Crenewcommand%7B%5Clabelenumiii%7D%7B%5Carabic%7Benumi%7D.%5Carabic%7Benumii%7D.%5Carabic%7Benumiii%7D%7D%0A%5Crenewcommand%7B%5Clabelenumiv%7D%7B%5Carabic%7Benumi%7D.%5Carabic%7Benumii%7D.%5Carabic%7Benumiii%7D.%5Carabic%7Benumiv%7D%7D%0A%0A%5Cbegin%7Benumerate%7D%0A%5Citem+One%0A%5Citem+Two%0A%5Citem+Three%0A%5Cbegin%7Benumerate%7D%0A++++%5Citem+Three+point+one%0A++++%5Cbegin%7Benumerate%7D%0A++++%5Citem+Three+point+one%2C+point+one%0A++++++++%5Cbegin%7Benumerate%7D%0A++++++++%5Citem+Three+point+one%2C+point+one%2C+point+one%0A++++++++%5Citem+Three+point+one%2C+point+one%2C+point+two%0A++++++++%5Cend%7Benumerate%7D%0A++++%5Cend%7Benumerate%7D%0A%5Cend%7Benumerate%7D%0A%5Citem+Four%0A%5Citem+Five%0A%5Cend%7Benumerate%7D%0A%0A%5Cend%7Bdocument%7D)

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

![List9OLV2.png](/files/a337f9057a2d5195bb2212394c05e2a6187ae2c7)

**In các biến đếm**

Trong ví dụ trước, lệnh `\arabic` được dùng để dàn trang giá trị hiện tại của các *biến đếm*. Lưu ý rằng “chữ số Ả Rập”, và việc dùng lệnh `\arabic`, ám chỉ các chữ số từ 0 đến 9: xem bài [viết về chữ số Ả Rập trên Wikipedia](https://en.wikipedia.org/wiki/Arabic_numerals) để biết thêm bối cảnh.

Nói chung, một *biến đếm* có thể được in theo nhiều định dạng bằng cách dùng một trong 5 lệnh sau:

* `\arabic{*biến đếm*}`
* `\roman{*biến đếm*}`
* `\Roman{*biến đếm*}`
* `\Alph{*biến đếm*}`
* `\alph{*biến đếm*}`

Ví dụ:

```latex
\documentclass{article}
\begin{document}
\begin{verbatim}
\newcounter{foo}
\setcounter{foo}{5}
\end{verbatim}
\newcounter{foo}
\setcounter{foo}{5}

\begin{itemize}
\item \verb|\arabic{foo}| tạo ra \arabic{foo}
\item \verb|\roman{foo}| tạo ra \roman{foo}
\item \verb|\Roman{foo}| tạo ra \Roman{foo}
\item \verb|\Alph{foo}| tạo ra \Alph{foo}
\item \verb|\alph{foo}| tạo ra \alph{foo}
\end{itemize}

\end{document}
```

[Mở ví dụ này trong Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Configuring+list+layout\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bverbatim%7D%0A%5Cnewcounter%7Bfoo%7D%0A%5Csetcounter%7Bfoo%7D%7B5%7D++++%0A%5Cend%7Bverbatim%7D%0A%5Cnewcounter%7Bfoo%7D%0A%5Csetcounter%7Bfoo%7D%7B5%7D+%0A%0A%5Cbegin%7Bitemize%7D%0A%5Citem+%5Cverb%7C%5Carabic%7Bfoo%7D%7C+produces+%5Carabic%7Bfoo%7D%0A%5Citem+%5Cverb%7C%5Croman%7Bfoo%7D%7C+produces+%5Croman%7Bfoo%7D+%0A%5Citem+%5Cverb%7C%5CRoman%7Bfoo%7D%7C+produces+%5CRoman%7Bfoo%7D%0A%5Citem+%5Cverb%7C%5CAlph%7Bfoo%7D%7C+produces+%5CAlph%7Bfoo%7D%0A%5Citem+%5Cverb%7C%5Calph%7Bfoo%7D%7C+produces+%5Calph%7Bfoo%7D%0A%5Cend%7Bitemize%7D%0A%0A%5Cend%7Bdocument%7D)

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

![List8OLV2.png](/files/27005ec242ffca449d05a8eb2e4f4f1476926508)

**Ví dụ không thực tế (vui)**

Ví dụ này dàn trang emoji bằng một phông màu OpenType nên nó sẽ *chỉ hoạt động trong LuaLaTeX*. Xem bài viết Overleaf [Tổng quan về các công nghệ hỗ trợ việc sử dụng phông emoji màu trong LaTeX](/latex/vi/bai-viet-chuyen-sau/10-an-overview-of-technologies-supporting-the-use-of-colour-emoji-fonts-in-latex.md) để biết thêm thông tin về việc dàn trang emoji.

Mặc dù đây chỉ là một ví dụ vui, sử dụng LuaLaTeX, nó minh họa việc tùy chỉnh cả bốn lệnh tạo nhãn, và sử dụng các biến đếm nhãn, để tạo ra một số kiểu gắn nhãn khá lạ... Hãy nhấp vào liên kết “Open in Overleaf” để xem toàn bộ mã.

```latex
\renewcommand{\labelenumi}{\duck{enumi}}
\renewcommand{\labelenumii}{\duck{enumi}.\duckegg{enumii}}
\renewcommand{\labelenumiii}{\duck{enumi}.\duckegg{enumii}.\duckegg{enumiii}}
\renewcommand{\labelenumiv}{\duck{enumi}.\duckegg{enumii}.\duckegg{enumiii}.\duckchick{enumiv}}

\begin{enumerate}
\item Một con vịt
\item Nhiều con vịt hơn
\item Một đàn vịt
\begin{enumerate}
    \item Vịt và trứng
    \begin{enumerate}
    \item Tôi có thấy...
    \item Vịt và vịt con
       \begin{enumerate}
       \item Ôi...
       \item Dễ thương quá!
       \end{enumerate}
    \end{enumerate}
\end{enumerate}
\item Quay lại với vịt
\item Lại nữa
\end{enumerate}
```

[Để xem ***toàn bộ mã***, hãy mở ví dụ LuaLaTeX này trong Overleaf.](https://www.overleaf.com/docs?engine=lualatex\&snip_name=Fun+example+of+configuring+a+list\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfontspec%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cnewfontfamily%5Cemojifont%5BRenderer%3DHarfbuzz%2CSizeFeatures%3D%7BSize%3D6%7D%5D%7BNotoColorEmoji.ttf%7D%0A%0A%5Cnewcount%5Cduckcount%0A%5Cnewcount%5Ceggcount%0A%5Cnewcount%5Cchickcount%0A%0A%5Cdef%5Cduck%231%7B%25%0A%5Cduckcount%3D%5Cvalue%7B%231%7D%25%0A%5Cloop%7B%5Cemojifont%5CUchar%221F986%7D%25%0A%5Cadvance%5Cduckcount+by+-1%0A%5Cunless%5Cifnum%5Cduckcount%3D0+%0A%5Crepeat%7D%0A%0A%5Cdef%5Cduckegg%231%7B%25%0A%5Ceggcount%3D%5Cvalue%7B%231%7D%25%0A%5Cloop%7B%5Cemojifont%5CUchar%221F95A%7D%25%0A%5Cadvance%5Ceggcount+by+-1%0A%5Cunless%5Cifnum%5Ceggcount%3D0+%0A%5Crepeat%7D%0A%0A%5Cdef%5Cduckchick%231%7B%25%0A%5Cchickcount%3D%5Cvalue%7B%231%7D%25%0A%5Cloop%7B%5Cemojifont%5CUchar%221F424%7D%25%0A%5Cadvance%5Cchickcount+by+-1%0A%5Cunless%5Cifnum%5Cchickcount%3D0+%0A%5Crepeat%7D%0A%5Crenewcommand%7B%5Clabelenumi%7D%7B%5Cduck%7Benumi%7D%7D%0A%5Crenewcommand%7B%5Clabelenumii%7D%7B%5Cduck%7Benumi%7D.%5Cduckegg%7Benumii%7D%7D%0A%5Crenewcommand%7B%5Clabelenumiii%7D%7B%5Cduck%7Benumi%7D.%5Cduckegg%7Benumii%7D.%5Cduckegg%7Benumiii%7D%7D%0A%5Crenewcommand%7B%5Clabelenumiv%7D%7B%5Cduck%7Benumi%7D.%5Cduckegg%7Benumii%7D.%5Cduckegg%7Benumiii%7D.%5Cduckchick%7Benumiv%7D%7D+%0A%0A%5Cbegin%7Benumerate%7D%0A%5Citem+A+duck%0A%5Citem+More+ducks%0A%5Citem+A+flurry+of+ducks%0A%5Cbegin%7Benumerate%7D%0A++++%5Citem+Ducks+and+eggs%0A++++%5Cbegin%7Benumerate%7D%0A++++%5Citem+Do+I+see...+%0A++++%5Citem+Ducks+and+pre-ducks+%0A+++++++%5Cbegin%7Benumerate%7D%0A+++++++%5Citem+Awww...%0A+++++++%5Citem+So+cute%21%0A+++++++%5Cend%7Benumerate%7D%0A++++%5Cend%7Benumerate%7D%0A%5Cend%7Benumerate%7D%0A%5Citem+Back+to+ducks%0A%5Citem+Again%0A%5Cend%7Benumerate%7D%0A%5Cend%7Bdocument%7D)

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

![Ducklist.png](/files/ff662eb81235b01c89d3de7b6f1c618929b963a0)

### Tùy chỉnh danh sách: thay đổi bố cục

Ngoài việc tùy chỉnh nhãn, còn có thể sửa đổi khoảng cách và bố cục danh sách, nhưng trước tiên chúng ta cần biết các tham số LaTeX khác nhau quyết định cách dàn trang và bố cục của danh sách.

#### Các tham số danh sách của LaTeX

Bạn có thể sử dụng [gói layouts](https://ctan.org/pkg/layouts?lang=en) để tạo một sơ đồ hiển thị các tham số danh sách LaTeX:

```latex
\documentclass{article}
\usepackage{layouts}
\begin{document}
\begin{figure}
\listdiagram
\caption{Các tham số \LaTeX{} xác định cách dàn trang và bố cục của danh sách.}
\end{figure}
\end{document}
```

[Mở ví dụ này trong Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+the+layout+package+to+view+list+structures\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Blayouts%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bfigure%7D%0A%5Clistdiagram%0A%5Ccaption%7BThe+%5CLaTeX%7B%7D+parameters+which+define+typesetting+and+layout+of+lists.%7D+%0A%5Cend%7Bfigure%7D%0A%5Cend%7Bdocument%7D)

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

![](/files/396eeb0b41cc832fc03a2523e2ffb5440acfca65)

Ý nghĩa của các tham số này được mô tả trong [phần danh sách của sổ tay tham khảo không chính thức LaTeX2e](https://tug.org/texinfohtml/latex2e.html#list) nên chúng ta sẽ không lặp lại ở đây.

#### Tạo một danh sách tùy chỉnh bằng môi trường list

LaTeX cung cấp môi trường `môi trường` đa năng, cung cấp khuôn khổ để tạo kiểu danh sách của riêng bạn. Dựa trên thông tin trong sơ đồ ở trên, ví dụ sau là một phiên bản hơi sửa đổi từ ví dụ trong [phần danh sách](https://tug.org/texinfohtml/latex2e.html#list) của [sổ tay tham khảo không chính thức của LaTeX2e](https://tug.org/texinfohtml/latex2e.html)

```latex
\documentclass{article}
\begin{document}
\newcounter{boxlblcounter}
\newcommand{\makeboxlabel}[1]{\fbox{#1.}\hfill}% \hfill lấp đầy ô nhãn
\newenvironment{boxlabel}
  {\begin{list}
    {\arabic{boxlblcounter}}
    {\usecounter{boxlblcounter}
     \setlength{\labelwidth}{3em}
     \setlength{\labelsep}{0em}
     \setlength{\itemsep}{2pt}
     \setlength{\leftmargin}{1.5cm}
     \setlength{\rightmargin}{2cm}
     \setlength{\itemindent}{0em}
     \let\makelabel=\makeboxlabel
    }
  }
{\end{list}}

\newcommand{\randomtext}{Xin chào, đây là một đoạn văn bản không có ý nghĩa. Xin chào, đây là một đoạn văn bản không có ý nghĩa. Xin chào, đây là một đoạn văn bản không có ý nghĩa.}

\noindent\randomtext

\begin{boxlabel}
\item \randomtext
\item \randomtext
\item \randomtext
\end{boxlabel}
\end{document}
```

[Mở ví dụ này trong Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+the+list+environment\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cnewcounter%7Bboxlblcounter%7D++%0A%5Cnewcommand%7B%5Cmakeboxlabel%7D%5B1%5D%7B%5Cfbox%7B%231.%7D%5Chfill%7D%25+%5Chfill+fills+the+label+box%0A%5Cnewenvironment%7Bboxlabel%7D%0A++%7B%5Cbegin%7Blist%7D%0A++++%7B%5Carabic%7Bboxlblcounter%7D%7D%0A++++%7B%5Cusecounter%7Bboxlblcounter%7D%0A+++++%5Csetlength%7B%5Clabelwidth%7D%7B3em%7D%0A+++++%5Csetlength%7B%5Clabelsep%7D%7B0em%7D%0A+++++%5Csetlength%7B%5Citemsep%7D%7B2pt%7D%0A+++++%5Csetlength%7B%5Cleftmargin%7D%7B1.5cm%7D%0A+++++%5Csetlength%7B%5Crightmargin%7D%7B2cm%7D%0A+++++%5Csetlength%7B%5Citemindent%7D%7B0em%7D+%0A+++++%5Clet%5Cmakelabel%3D%5Cmakeboxlabel%0A++++%7D%0A++%7D%0A%7B%5Cend%7Blist%7D%7D%0A%0A%5Cnewcommand%7B%5Crandomtext%7D%7BHello%2C+here+is+some+text+without+a+meaning.+Hello%2C+here+is+some+text+without+a+meaning.+Hello%2C+here+is+some+text+without+a+meaning.%7D%0A%0A%5Cnoindent%5Crandomtext%0A%0A%5Cbegin%7Bboxlabel%7D%0A%5Citem+%5Crandomtext%0A%5Citem+%5Crandomtext%0A%5Citem+%5Crandomtext%0A%5Cend%7Bboxlabel%7D%0A%5Cend%7Bdocument%7D)

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

![Listenvironmemt2.png](/files/3cd0f28da5f155c399c028c3fdde66c029b9754b)

### Dùng gói enumitem để sửa đổi và tạo danh sách

Tính năng [`enumitem` gói](https://ctan.org/pkg/enumitem?lang=en) là phương pháp được khuyến nghị để sửa đổi các danh sách LaTeX chuẩn hoặc tạo các định dạng danh sách tùy chỉnh của riêng bạn. `enumitem` cung cấp một *kho phong phú* các tính năng nên chúng ta không thể đề cập hết, nhưng chúng ta có thể cung cấp một vài ví dụ cơ bản để giúp bạn bắt đầu. Bất kỳ ai muốn tìm hiểu sâu hơn về gói đa năng này đều *rất* được khuyến khích tìm kiếm trên tex.stackexchange các [câu hỏi, câu trả lời (và ví dụ) liên quan đến `enumitem` gói](https://tex.stackexchange.com/questions/tagged/enumitem), và đọc [tài liệu gói](http://mirrors.ctan.org/macros/latex/contrib/enumitem/enumitem.pdf).

#### tùy chọn gói enumitem shortlabels

Tính năng `enumitem` cung cấp một tham số cấu hình tùy chọn có tên `shortlabels` mà bạn dùng thông qua

```latex
\usepackage[shortlabels]{enumitem}
```

Tính năng `shortlabels` tùy chọn mô phỏng hành vi của `enumerate` gói, cung cấp một phương pháp ngắn gọn để định nghĩa sơ đồ đánh số của các môi trường enumerate. Xem [`enumerate` tài liệu gói](https://ctan.org/pkg/enumerate?lang=en) để biết thêm thông tin.

#### Sửa đổi một danh sách chuẩn

Tham chiếu đến [sơ đồ các tham số LaTeX](#latex-list-parameters) chúng ta có thể dùng `enumitem` để dễ dàng tùy chỉnh một danh sách LaTeX chuẩn, chẳng hạn như `itemize`:

```latex
\documentclass{article}
\usepackage{enumitem}

\begin{document}

\newcommand{\randomtext}{Xin chào, đây là một đoạn văn bản không có ý nghĩa. Xin chào, đây là một đoạn văn bản không có ý nghĩa.}

\section*{Sử dụng cài đặt mặc định của LaTeX cho \texttt{itemize}}

\randomtext

\begin{itemize}
\item \randomtext
   \begin{itemize}
      \item \randomtext
        \begin{itemize}
        \item \randomtext
        \end{itemize}
   \item \randomtext
   \end{itemize}
\item \randomtext
\end{itemize}

\section*{Sử dụng \texttt{itemize} tùy chỉnh qua \texttt{enumitem}}

\subsection*{Lưu ý tác động của cài đặt lề trái và lề phải}

\randomtext

\begin{itemize}[leftmargin=30pt, rightmargin=2cm]
\item \randomtext
   \begin{itemize}
      \item \randomtext
        \begin{itemize}
        \item \randomtext
        \end{itemize}
   \item \randomtext
   \end{itemize}
\item \randomtext
\end{itemize}

\end{document}
```

[Mở `enumitem` ví dụ trên Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Modifying+a+LaTeX+list+with+enumitem\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Benumitem%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cnewcommand%7B%5Crandomtext%7D%7BHello%2C+here+is+some+text+without+a+meaning.+Hello%2C+here+is+some+text+without+a+meaning.%7D%0A%0A%5Csection%2A%7BUsing+LaTeX%27s+default+settings+for+%5Ctexttt%7Bitemize%7D%7D%0A%0A%5Crandomtext%0A%0A%5Cbegin%7Bitemize%7D%0A%5Citem+%5Crandomtext%0A+++%5Cbegin%7Bitemize%7D%0A++++++%5Citem+%5Crandomtext%0A++++++++%5Cbegin%7Bitemize%7D%0A++++++++%5Citem+%5Crandomtext%0A++++++++%5Cend%7Bitemize%7D%0A+++%5Citem+%5Crandomtext%0A+++%5Cend%7Bitemize%7D%0A%5Citem+%5Crandomtext%0A%5Cend%7Bitemize%7D%0A%0A%5Csection%2A%7BUsing+a+custom+%5Ctexttt%7Bitemize%7D+via+%5Ctexttt%7Benumitem%7D%7D%0A%0A%5Csubsection%2A%7BNote+the+effect+of+left+and+right+margin+settings%7D%0A%0A%5Crandomtext%0A%0A%5Cbegin%7Bitemize%7D%5Bleftmargin%3D30pt%2C+rightmargin%3D2cm%5D%0A%5Citem+%5Crandomtext%0A+++%5Cbegin%7Bitemize%7D%0A++++++%5Citem+%5Crandomtext%0A++++++++%5Cbegin%7Bitemize%7D%0A++++++++%5Citem+%5Crandomtext%0A++++++++%5Cend%7Bitemize%7D%0A+++%5Citem+%5Crandomtext%0A+++%5Cend%7Bitemize%7D%0A%5Citem+%5Crandomtext%0A%5Cend%7Bitemize%7D%0A%0A%5Cend%7Bdocument%7D)

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

![Tweakitemize2.png](/files/359f2ae59d96cf44bf23869073fd31925193ecfd)

#### Tạo một danh sách mới với enumitem

Để tạo một kiểu danh sách mới với `enumitem` bạn dùng `\newlist` lệnh này yêu cầu 3 đối số:

```latex
\newlist{name}{list-type}{max-depth}
```

* **`tên`**: tên của danh sách, được dùng như một môi trường:

  ```
  \begin{name}
  ...
  \end{name}
  ```
* **`list-type`** loại này phải là một trong các kiểu danh sách chuẩn của LaTeX:
* `enumerate`
* `itemize`
* `mô tả`
* **`max-depth`**: độ sâu tối đa mà danh sách này sẽ được lồng vào. **LƯU Ý** đối với các danh sách vượt quá giới hạn lồng mặc định 4 của LaTeX, bạn cũng phải dùng lệnh `\setlistdepth{*số nguyên*}` trong đó `*số nguyên*` là độ sâu lồng tối đa mà bạn dự định dùng. Xem [ví dụ Danh sách cho luật sư](#lists-for-lawyers-nesting-lists-to-an-arbitrary-depth) để xem minh họa.

Sau khi tạo danh sách mới, bạn có thể cấu hình nó bằng `\setlist` lệnh này.

**Dùng \setlist để cấu hình một danh sách tùy chỉnh được tạo với enumitem**

Trong ví dụ này, chúng ta sẽ tạo một danh sách mới tên là `myitems` dựa trên `enumerate`. Chúng ta sẽ đặt [`**độ sâu tối đa**`](#maxdepth) là 3:

```latex
\newlist{myitems}{enumerate}{3}
```

Một yêu cầu tối thiểu là dùng `\setlist` lệnh để định nghĩa nhãn cho danh sách tùy chỉnh này. Một cách để làm điều đó, đối với các danh sách dựa trên enumerate, là dùng các biến đếm được tạo bởi `enumitem` gói đó — các biến đếm này dùng `**name**` của danh sách của bạn: `myitems` trong ví dụ của chúng ta.

Đây là cách chúng ta sử dụng các biến bộ đếm tương ứng trong cấu hình nhãn của mình:

* `myitems**i**` cho các mục cấp 1
* `myitems**ii**` cho các mục cấp 2
* `myitems**iii**` cho các mục cấp 3

Nếu chúng ta có nhiều hơn 3 cấp, các biến bộ đếm tương ứng sẽ được gọi là `myitems**iv**` (cấp 4), `myitems**v**` (cấp 5) và cứ thế tiếp tục, sử dụng các số La Mã viết thường.

Ngoài các nhãn, chúng ta cũng sẽ đặt một số giá trị cho `leftmargin` và `rightmargin` (xem [sơ đồ các tham số LaTeX](#latex-list-parameters)).

```latex
\documentclass{article}
\usepackage{enumitem}
\begin{document}

\newcommand{\randomtext}{Xin chào, đây là một đoạn văn bản không có ý nghĩa. Xin chào, đây là một đoạn văn bản không có ý nghĩa.}

\newcommand{\shortrandomtext}{Hello, here is some text.}
% Tạo một danh sách tùy chỉnh dựa trên enumerate
% Nó được gọi là "myitems"
% Chúng ta sẽ tạo một danh sách có độ sâu 3 cấp
\newlist{myitems}{enumerate}{3}

% Cấu hình hành vi của các mục cấp 1
% LƯU Ý: chúng ta dùng bộ đếm danh sách "myitemsi"
\setlist[myitems, 1]
{label=\arabic{myitemsi}., %1., 2., 3., ...
leftmargin=\parindent,
rightmargin=10pt
}

% Cấu hình hành vi của các mục cấp 2
% LƯU Ý: chúng ta dùng bộ đếm danh sách "myitemsii"
\setlist[myitems, 2]
{label=\arabic{myitemsi}.\arabic{myitemsii}, %1.1, 1.2, 1.3...
leftmargin=15pt,
rightmargin=15pt}

% Cấu hình hành vi của các mục cấp 3
% LƯU Ý: chúng ta dùng bộ đếm danh sách "myitemsiii"
\setlist[myitems, 3]
% Dùng nhãn 1.1:<kern>(a), 1.1:<kern>(b), v.v.
{label=\arabic{myitemsi}.\arabic{myitemsii}:\kern1.5pt(\alph{myitemsiii}),
leftmargin=30pt,
rightmargin=30pt}

\randomtext
\begin{myitems}
\item \randomtext
    \begin{myitems}
    \item \randomtext
        \begin{myitems}
        \item \randomtext
        \item \randomtext
        \end{myitems}
    \item \shortrandomtext
    \item \shortrandomtext
    \end{myitems}
\item \randomtext
\end{myitems}
\end{document}
```

[Mở `enumitem` ví dụ trên Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Create+a+custom+list+with+enumitem\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Benumitem%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cnewcommand%7B%5Crandomtext%7D%7BHello%2C+here+is+some+text+without+a+meaning.+Hello%2C+here+is+some+text+without+a+meaning.%7D%0A%0A%5Cnewcommand%7B%5Cshortrandomtext%7D%7BHello%2C+here+is+some+text.%7D%0A%25+Create+a+custom+list+based+on+enumerate%0A%25+It+is+called+%22myitems%22%0A%25+We%27ll+create+a+list+that+is+3+levels+deep%0A%5Cnewlist%7Bmyitems%7D%7Benumerate%7D%7B3%7D%0A%0A%25+Configure+the+behaviour+of+level+1+entries%0A%25+NOTE%3A+we+use+the+list+counter+%22myitemsi%22%0A%5Csetlist%5Bmyitems%2C+1%5D%0A%7Blabel%3D%5Carabic%7Bmyitemsi%7D.%2C+%251.%2C+2.%2C+3.%2C+...%0Aleftmargin%3D%5Cparindent%2C%0Arightmargin%3D10pt%0A%7D%0A%0A%25+Configure+the+behaviour+of+level+2+entries%0A%25+NOTE%3A+we+use+the+list+counter+%22myitemsii%22%0A%5Csetlist%5Bmyitems%2C+2%5D%0A%7Blabel%3D%5Carabic%7Bmyitemsi%7D.%5Carabic%7Bmyitemsii%7D%2C+%251.1%2C+1.2%2C+1.3...%0Aleftmargin%3D15pt%2C%0Arightmargin%3D15pt%7D%0A%0A%25+Configure+the+behaviour+of+level+3+entries%0A%25+NOTE%3A+we+use+the+list+counter+%22myitemsiii%22%0A%5Csetlist%5Bmyitems%2C+3%5D%0A%25+Use+a+label+of+1.1%3A%3Ckern%3E%28a%29%2C+1.1%3A%3Ckern%3E%28b%29+etc++%0A%7Blabel%3D%5Carabic%7Bmyitemsi%7D.%5Carabic%7Bmyitemsii%7D%3A%5Ckern1.5pt%28%5Calph%7Bmyitemsiii%7D%29%2C%0Aleftmargin%3D30pt%2C%0Arightmargin%3D30pt%7D%0A%0A%5Crandomtext%0A%5Cbegin%7Bmyitems%7D%0A%5Citem+%5Crandomtext%0A++++%5Cbegin%7Bmyitems%7D%0A++++%5Citem+%5Crandomtext%0A++++++++%5Cbegin%7Bmyitems%7D%0A++++++++%5Citem+%5Crandomtext%0A++++++++%5Citem+%5Crandomtext%0A++++++++%5Cend%7Bmyitems%7D%0A++++%5Citem+%5Cshortrandomtext%0A++++%5Citem+%5Cshortrandomtext%0A++++%5Cend%7Bmyitems%7D%0A%5Citem+%5Crandomtext%0A%5Cend%7Bmyitems%7D%0A%5Cend%7Bdocument%7D)

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

![CustomItemizeList.png](/files/8d20dcb81f5bb8009776d1f538bdc1804e2a088c)

#### Danh sách cho luật sư: lồng các danh sách đến độ sâu tùy ý

Tính năng `enumitem` gói cho phép bạn tạo các danh sách có thể được lồng đến độ sâu tùy ý, loại bỏ giới hạn 4 của LaTeX. Bất kỳ ai chuẩn bị hợp đồng với cấu trúc điều khoản phức tạp (lồng sâu) đều có thể hưởng lợi từ điều này, mặc dù mã lồng nhau trông có vẻ hơi đáng sợ...

```latex
\documentclass{article}
\usepackage{enumitem}

\begin{document}

\newlist{contract}{enumerate}{10}
\setlist[contract]{label*=\arabic*.}
\setlistdepth{10}

\section*{Danh sách tùy chỉnh được lồng đến 10 cấp độ sâu!}

\begin{contract}
\item Cấp 1
 \begin{contract}
 \item Cấp 2
   \begin{contract}
   \item Cấp 3
     \begin{contract}
     \item Cấp 4
       \begin{contract}
       \item Cấp 5
        \begin{contract}
        \item Cấp 6
         \begin{contract}
         \item Cấp 7
          \begin{contract}
          \item Cấp 8
           \begin{contract}
           \item Cấp 9
            \begin{contract}
            \item Cấp 10
          \end{contract}
         \end{contract}
        \end{contract}
       \end{contract}
      \end{contract}
     \end{contract}
    \end{contract}
   \end{contract}
  \end{contract}
 \end{contract}
\end{document}
```

[Mở `enumitem` ví dụ trên Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+the+enumitem+package+to+create+deeply+nested+lists\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Benumitem%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cnewlist%7Bcontract%7D%7Benumerate%7D%7B10%7D%0A%5Csetlist%5Bcontract%5D%7Blabel%2A%3D%5Carabic%2A.%7D%0A%5Csetlistdepth%7B10%7D+%0A%0A%5Csection%2A%7BCustom+list+nested+to+10+levels+deep%21%7D%0A%0A%5Cbegin%7Bcontract%7D%0A%5Citem+Level+1%0A+%5Cbegin%7Bcontract%7D%0A+%5Citem+Level+2%0A+++%5Cbegin%7Bcontract%7D%0A+++%5Citem+Level+3%0A+++++%5Cbegin%7Bcontract%7D%0A+++++%5Citem+Level+4%0A+++++++%5Cbegin%7Bcontract%7D%0A+++++++%5Citem+Level+5%0A++++++++%5Cbegin%7Bcontract%7D%0A++++++++%5Citem+Level+6%0A+++++++++%5Cbegin%7Bcontract%7D%0A+++++++++%5Citem+Level+7%0A++++++++++%5Cbegin%7Bcontract%7D%0A++++++++++%5Citem+Level+8%0A+++++++++++%5Cbegin%7Bcontract%7D%0A+++++++++++%5Citem+Level+9%0A++++++++++++%5Cbegin%7Bcontract%7D%0A++++++++++++%5Citem+Level+10%0A++++++++++%5Cend%7Bcontract%7D%0A+++++++++%5Cend%7Bcontract%7D%0A++++++++%5Cend%7Bcontract%7D%0A+++++++%5Cend%7Bcontract%7D%0A++++++%5Cend%7Bcontract%7D%0A+++++%5Cend%7Bcontract%7D%0A++++%5Cend%7Bcontract%7D%0A+++%5Cend%7Bcontract%7D%0A++%5Cend%7Bcontract%7D%0A+%5Cend%7Bcontract%7D%0A%5Cend%7Bdocument%7D)

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

![10levels.png](/files/ef59029e24d989d57fcf297d9fcfefd51759d60b)

#### Các dấu đầu dòng tùy chỉnh bằng gói enumitem và MetaPost

Các ví dụ sau chỉ hoạt động với LuaLaTeX và được thiết kế để gợi ý một số khả năng — dĩ nhiên, hãy thay MetaPost bằng ứng dụng/công cụ vẽ mà bạn ưa thích!

Những ví dụ này sử dụng `luamplib` gói và cũng minh họa các lệnh có thể mở rộng, chẳng hạn như `\the` và `\directlua`, có thể được dùng trong mã MetaPost.

**Ví dụ 1: các dấu đầu dòng tự động co giãn**

Ví dụ này tạo ra các dấu đầu dòng giảm kích thước khi độ sâu danh sách tăng lên. Nhấp vào liên kết “Mở trong Overleaf” để chạy ví dụ và xem toàn bộ mã.

```latex
% Khai báo một danh sách mới dựa trên itemize qua enumitem
\newlist{myEnumerate}{itemize}{6}

% Tùy chọn nosep loại bỏ toàn bộ khoảng cách dọc
% label=\protect\mpbullet khiến tất cả các dấu đầu dòng được
% vẽ bởi một macro sử dụng mã MetaPost. \protect
% là bắt buộc như đã nêu trong sổ tay enumitem

\setlist[myEnumerate]{nosep,label=\protect\mpbullet}
\setlistdepth{6}

\begin{myEnumerate}
\item Cấp 1
  \begin{myEnumerate}
   \item Cấp 2
    \begin{myEnumerate}
     \item Cấp 3
      \begin{myEnumerate}
       \item Cấp 4
        \begin{myEnumerate}
         \item Cấp 5
          \begin{myEnumerate}
           \item Cấp 6
           \end{myEnumerate}
        \end{myEnumerate}
       \end{myEnumerate}
    \end{myEnumerate}
   \end{myEnumerate}
\end{myEnumerate}
```

[Để xem ***toàn bộ mã***, hãy mở ví dụ LuaLaTeX này trong Overleaf.](https://www.overleaf.com/docs?engine=lualatex\&snip_name=Using+MetaPost+with+the+enumitem+package\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bluamplib%7D%0A%5Cusepackage%7Benumitem%7D%0A%5Ceverymplib%7Bbeginfig%280%29%3B%7D%0A%5Ceveryendmplib%7Bendfig%3B%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0AThis+list+configuration+example+uses+MetaPost+code+that+contains+Lua+code+via+%5Cverb%7C%5Cdirectlua%7C.+Bullets+are+created+by+MetaPost+code%2C+size+is+calculated+from+the+depth+of+the+entry.%0A%0A%25+It+is+convenient+to+use+%5Clet%5Cmpdepth%5C%40listdepth%3A+makes+it+%0A%25+easier+to+use+in+MetaPost+code%0A%0A%5Ccatcode%60%40%3D11%0A%5Clet%5Cmpdepth%5C%40listdepth%0A%5Ccatcode%60%40%3D12%0A%0A%5Cnewcommand%7B%5Cmpbullet%7D%7B%25%0A%5Cbegin%7Bmplibcode%7D%25%0Adraw+%280%2C0%29..%280%2C-%5Cdirectlua%7Btex.print%28%5Cthe%5Cmpdepth%2F2%29%7D%29+withpen+pencircle+scaled+2pt+withcolor+white%3B%0Adrawdot%280%2C0%29+withpen+pencircle+scaled+%5Cdirectlua%7Btex.print%285%2Fmath.sqrt%28%5Cthe%5Cmpdepth%29%29%7Dbp%3B%0A%5Cend%7Bmplibcode%7D%7D%0A%25+Declare+a+new+itemize-based+list+via+enumitem%0A%5Cnewlist%7BmyEnumerate%7D%7Bitemize%7D%7B6%7D%0A%0A%25+The+nosep+option+removes+all+vertical+spacing%0A%25+the+label%3D%5Cprotect%5Cmpbullet+causes+all+bullets+to+be+%0A%25+drawn+by+a+macro+that+uses+MetaPost+code.+%5Cprotect%0A%25+is+required+as+noted+in+the+enumitem+manual+%0A%0A%5Csetlist%5BmyEnumerate%5D%7Bnosep%2Clabel%3D%5Cprotect%5Cmpbullet%7D%0A%5Csetlistdepth%7B6%7D%0A%0A%5Cbegin%7BmyEnumerate%7D%0A%5Citem+Level+1%0A++%5Cbegin%7BmyEnumerate%7D%0A+++%5Citem+Level+2%0A++++%5Cbegin%7BmyEnumerate%7D%0A+++++%5Citem+Level+3%0A++++++%5Cbegin%7BmyEnumerate%7D%0A+++++++%5Citem+Level+4%0A++++++++%5Cbegin%7BmyEnumerate%7D%0A+++++++++%5Citem+Level+5%0A++++++++++%5Cbegin%7BmyEnumerate%7D%0A+++++++++++%5Citem+Level+6%0A+++++++++++%5Cend%7BmyEnumerate%7D%0A++++++++%5Cend%7BmyEnumerate%7D%0A+++++++%5Cend%7BmyEnumerate%7D%0A++++%5Cend%7BmyEnumerate%7D%0A+++%5Cend%7BmyEnumerate%7D%0A%5Cend%7BmyEnumerate%7D%0A%5Cend%7Bdocument%7D)

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

![Autosize.png](/files/f1efe70e7c040adaaaf671a26ffe60847404bfeb)

**Ví dụ 2: các dấu đầu dòng tùy chỉnh độc đáo**

Ví dụ này được lấy cảm hứng từ một [ví dụ trên tex.stackexchange](https://tex.stackexchange.com/a/313337) mà Overleaf đã chỉnh sửa để tạo các dấu đầu dòng tùy chỉnh bằng mã MetaPost. Nhấp vào liên kết “Mở trong Overleaf” để chạy ví dụ và xem toàn bộ mã.

```latex
\newlist{todolist}{itemize}{2}

\begin{itemize}
  \item Bắt đầu suy nghĩ về những gì chúng ta hy vọng đạt được
  \begin{todolist}
  \item[\mpdot] Xác định mục tiêu
  \item[\mpyingyang] Cân bằng tác động môi trường
  \item[\mpsquare{0}{5}{0}] Triển khai các kế hoạch
    \begin{todolist}
    \item[\mpsquare{-0.5}{4}{0}] Kế hoạch giai đoạn 1
    \item[\mpsquare{-0.5}{4}{-20}] Kế hoạch giai đoạn 2
    \item[\mpsquare{-0.5}{4}{-40}] Kế hoạch giai đoạn 3
    \item[\mpsquare{-0.5}{4}{-60}] Kế hoạch giai đoạn 4
    \end{todolist}
  \end{todolist}
\end{itemize}
```

[Để xem ***toàn bộ mã***, hãy mở ví dụ LuaLaTeX này trong Overleaf.](https://www.overleaf.com/docs?engine=lualatex\&snip_name=Second+example+using+MetaPost+with+the+enumitem+package\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Benumitem%7D%0A%5Cusepackage%7Bluamplib%7D%0A%5Ceverymplib%7Bbeginfig%280%29%3B%7D%0A%5Ceveryendmplib%7Bendfig%3B%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cnewcommand%7B%5Cmpyingyang%7D%7B%25%0A%5Clower1.5pt%5Chbox%7B%5Cbegin%7Bmplibcode%7D%25%0Apath+p%3B%0Ap%3A%3D%28-1%2C0%29..%280%2C-1%29..%281%2C0%29%3B%0Afill+%28p%7Bup%7D..%7Bdown%7D%280%2C0%29%7Bdown%7D..%7Bup%7Dcycle%29+scaled+0.15cm%3B%0Adraw+%28p..%280%2C1%29..cycle%29+scaled+0.15cm+%3B%0A%5Cend%7Bmplibcode%7D%7D%25%0A%7D%25%0A%5Cnewcommand%7B%5Cmpdot%7D%7B%25%0A%5Clower1.5pt%5Chbox%7B%5Cbegin%7Bmplibcode%7D%25%0Adrawdot%280%2C0%29+withpen+pencircle+scaled+2bp%3B%0Adraw+fullcircle+scaled+0.2cm%3B%0Adraw+fullcircle+scaled+0.3cm%3B%0A%5Cend%7Bmplibcode%7D%7D%25%0A%7D%25%0A%5Cnewcommand%7B%5Cmpsquare%7D%5B3%5D%7B%25%0A%5Clower%231pt%5Chbox%7B%5Cbegin%7Bmplibcode%7D%25%0Adraw+unitsquare+rotated+%233+scaled+%232pt%3B%0A%5Cend%7Bmplibcode%7D%25%0A%7D%7D%25%0A%5Cnewlist%7Btodolist%7D%7Bitemize%7D%7B2%7D%0A%0A%5Cbegin%7Bitemize%7D%0A++%5Citem+Start+thinking+about+what+we+hope+to+achieve%0A++%5Cbegin%7Btodolist%7D%0A++%5Citem%5B%5Cmpdot%5D+Identify+objectives%0A++%5Citem%5B%5Cmpyingyang%5D+Balance+environmental+impact+%0A++%5Citem%5B%5Cmpsquare%7B0%7D%7B5%7D%7B0%7D%5D+Implement+plans%0A++++%5Cbegin%7Btodolist%7D%0A++++%5Citem%5B%5Cmpsquare%7B-0.5%7D%7B4%7D%7B0%7D%5D+Stage+1+plans%0A++++%5Citem%5B%5Cmpsquare%7B-0.5%7D%7B4%7D%7B-20%7D%5D+Stage+2+plans%0A++++%5Citem%5B%5Cmpsquare%7B-0.5%7D%7B4%7D%7B-40%7D%5D+Stage+3+plans%0A++++%5Citem%5B%5Cmpsquare%7B-0.5%7D%7B4%7D%7B-60%7D%5D+Stage+4+plans%0A++++%5Cend%7Btodolist%7D%0A++%5Cend%7Btodolist%7D%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bdocument%7D)

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

![CustomBullets2.png](/files/df0a9bece0e2524c494e90b63bbd7cdd8037375e)

## Các tính năng khác của gói enumitem

Như đã lưu ý, gói `enumitem` rất linh hoạt và cung cấp nhiều tính năng để sử dụng và tùy chỉnh danh sách. Ví dụ, các tính năng chúng ta chưa đề cập bao gồm:

* tham chiếu các mục trong danh sách: ví dụ, xem [câu hỏi và ví dụ này trên tex.stackexchane](https://tex.stackexchange.com/questions/524822/help-for-formatting-the-ref-of-nested-enumerate)
* kiểm soát `enumerate` đánh số danh sách:
  * đặt số bắt đầu của mục đầu tiên
  * tiếp tục đánh số của các `enumerate` danh sách

Và còn nhiều nữa! Hãy duyệt [tex.stackexchange để tìm nhiều ví dụ tuyệt vời](https://tex.stackexchange.com/questions/tagged/enumitem) về những gì bạn có thể làm qua `enumitem`—và, tất nhiên, [đọc tài liệu của gói](https://ctan.org/pkg/enumitem).


---

# 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/kien-thuc-co-ban-ve-latex/04-lists.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.
