> 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/chu-de-khac/21-how-tex-macros-actually-work-part-3.md).

# Các macro TeX thực sự hoạt động như thế nào: Phần 3

[Phần 1](/latex/vi/chu-de-khac/19-how-tex-macros-actually-work-part-1.md) [Phần 2](/latex/vi/chu-de-khac/20-how-tex-macros-actually-work-part-2.md) [Phần 3](/latex/vi/chu-de-khac/21-how-tex-macros-actually-work-part-3.md) [Phần 4](/latex/vi/chu-de-khac/22-how-tex-macros-actually-work-part-4.md) [Phần 5](/latex/vi/chu-de-khac/23-how-tex-macros-actually-work-part-5.md) [Phần 6](/latex/vi/chu-de-khac/24-how-tex-macros-actually-work-part-6.md)

## Đã đến lúc tạm dừng!

Trước khi chuyển sang phần tiếp theo của câu chuyện này, chúng ta cần ôn lại: nhắc lại mình đang đi đến đâu và tập hợp suy nghĩ để bảo đảm mọi ý chính đều đã được đặt đúng chỗ. Nhắc lại một chút, ví dụ đã làm của chúng ta dựa trên giả định rằng TeX đã đọc một dòng văn bản chứa `Hello World \\jobname` và rằng TeX đang dàn chữ dòng này để tạo thành một đoạn văn.

### Mục tiêu cuối cùng

Mục tiêu của chúng ta là phát triển một sự hiểu biết tốt hơn (sâu hơn) về bản chất của các macro TeX và cách chúng hoạt động. Tuy nhiên, để đạt được điều đó trước hết chúng ta cần hiểu cách TeX đọc một tệp đầu vào và xử lý các ký tự bên trong nó. Dưới đây là phần tóm tắt các chủ đề đã đề cập cho đến nay.

* TeX đọc (quét) từng ký tự trong đầu vào của bạn và, với mỗi ký tự, TeX có hai mẩu thông tin:
* **mã ký tự**: một số nguyên dùng để nhận diện ký tự đó, ví dụ khi được lưu trong tệp đầu vào .tex;
* **mã loại**: một số nguyên khác, nội bộ trong TeX, mà nó dùng để gán ý nghĩa cho từng ký tự được đọc từ đầu vào.
* Ngay khi một ký tự được TeX đọc vào, mã loại của từng ký tự trở thành *vĩnh viễn* được gắn với ký tự riêng lẻ đó thông qua việc tạo ra một token ký tự:
* TeX dùng một công thức đơn giản để “đóng gói” một mã ký tự và mã loại tương ứng của nó vào một số nguyên gọi là token ký tự.
* Bạn có thể thay đổi ý nghĩa của bất kỳ ký tự nào mà TeX *chưa đọc vào* bằng cách gán một mã loại khác cho bất kỳ ký tự nào mà bạn muốn thay đổi hành vi—tức là sửa cách TeX xử lý ký tự đó.
* Việc định nghĩa lại (ánh xạ lại) các mã loại được thực hiện bằng primitive `\catcode` lệnh này.
* Khi TeX thấy một mã loại là 0, nó sẽ chuyển sang một chế độ quét đặc biệt và bắt đầu tìm một lệnh: hoặc một *từ điều khiển* đa chữ cái (có thể) *ký hiệu điều khiển*.

Cho đến nay, chúng ta đã xem xét quá trình quét đầu vào của TeX khi nó xác định từng ký tự riêng lẻ và dùng mã loại của mỗi ký tự để quyết định phải làm gì tiếp theo. Một số ký tự chỉ là các mục văn bản thông thường để dàn chữ (ví dụ mã loại 11), nhưng chúng ta cũng đã thấy ký tự khoảng trắng (mã loại 10) và ký tự thoát (mã loại 0). Còn có những mã loại khác mà vì ngắn gọn chúng ta chưa xét đến—chẳng hạn mã loại 1 (“bắt đầu nhóm”, ví dụ, `{`), mã loại 2 (“kết thúc nhóm”, ví dụ, `}`) và các mã khác. Mỗi mã loại đều có vai trò riêng trong quá trình quét đầu vào của TeX và trong các bước xử lý tiếp theo bởi các tiến trình/thuật toán phần mềm bên trong TeX.

### Token: ôn tập nhanh

Khái niệm “token” là trung tâm trong cách TeX hoạt động: bạn sẽ thấy “token” được nhắc đến hoặc tham chiếu xuyên suốt các sách, bài viết và cộng đồng trực tuyến liên quan đến TeX, vì vậy rất đáng để ôn lại ngắn gọn chủ đề này—bạn có thể tìm thêm chi tiết trong một bài viết đã xuất bản trước đó [“TeX token” là gì?](/latex/vi/bai-viet-chuyen-sau/53-what-is-a-tex-token.md)

Chúng ta đã thấy rằng TeX chuyển các ký tự đầu vào thành token bằng cách kết hợp mã ký tự và mã loại thành một số nguyên tổng hợp duy nhất. TeX làm điều tương tự với các lệnh: dùng tên của lệnh, nó tính ra một số nguyên gọi là *token lệnh* (chúng ta sẽ khám phá điều này chi tiết hơn). Như một hướng dẫn, bạn có thể xem token là cách TeX “đóng gói” các mục mà nó đã đọc từ đầu vào, chuẩn bị chúng để chuyển sang giai đoạn xử lý tiếp theo của TeX. Việc tất cả các mục (ký tự hoặc lệnh) được bọc gọn trong một biểu diễn số duy nhất giúp xử lý chúng dễ dàng hơn ở các bước tiếp theo. Ví dụ, khi TeX muốn lưu một phần đầu vào của bạn để dùng sau này, chẳng hạn một định nghĩa macro, TeX chỉ cần lưu định nghĩa macro của bạn, dù phức tạp đến đâu, dưới dạng một dãy số nguyên, trong đó mỗi số nguyên là một token đại diện cho một ký tự hoặc một lệnh tạo thành (được chứa trong) định nghĩa của macro.

## Vậy, tiếp theo là gì?

Ở phần cuối của Phần 2, chúng ta đã thấy cách một ký tự thoát (mã loại 0) chuyển TeX sang một chế độ xử lý đặc biệt nơi nó tìm tên của một lệnh. Trong ví dụ của chúng ta, TeX đã phát hiện chuỗi ký tự `jobname` và chúng ta kết thúc Phần 2 tại điểm mà TeX sắp “làm điều gì đó” với chuỗi ký tự đó (tên của một lệnh). Trong phần này, chúng ta sẽ xem chi tiết TeX làm gì tiếp theo.

Một khi TeX đã xác định rằng một chuỗi ký tự cụ thể trong tệp đầu vào của bạn đại diện cho tên của một lệnh (ở đây, `jobname`) TeX có thể, tùy theo việc nó đang làm gì, cần thực thi lệnh đó. Chúng ta nói “có thể cần” vì có những lúc TeX sẽ không cố gắng thực thi lệnh ngay lập tức: ví dụ, khi nó đang định nghĩa một macro (TeX đang xây dựng các danh sách token)—các chủ đề này chúng ta sẽ bàn sau. Tuy nhiên, chúng ta sẽ tiếp tục theo ví dụ nơi TeX đang dàn một đoạn văn và *sẽ*, trong tình huống này, cần thực thi `\jobname`.

### Từ một chuỗi ký tự đến việc chạy một lệnh: bằng cách nào?

Trước hết, hãy xem lại Hình 5b từ Phần 2, trong đó TeX đã xác định rằng một chuỗi ký tự cụ thể trong đầu vào tạo thành tên của một lệnh: `jobname`. Hình 5b cho thấy TeX phải “Kiểm tra các bảng nội bộ...”. Điều đó *thực sự có nghĩa là gì*?

![TeX đang tìm tên lệnh](/files/5f05ecfc0a2850e29c85decde44ab05455fda739)

Một mô tả khác, chi tiết hơn, về cách TeX “Kiểm tra các bảng nội bộ” để chuyển từ việc có một chuỗi ký tự (ví dụ, `jobname`) sang việc xác định chính xác lệnh đó là gì và nó có nghĩa gì có thể được tìm thấy trong một bài viết trước [“TeX token” là gì?](/latex/vi/bai-viet-chuyen-sau/53-what-is-a-tex-token.md) Ở đây, chúng ta sẽ tóm tắt các ý chính đồng thời cố gắng tránh lặp lại quá nhiều.

Hãy bắt đầu bằng một phép so sánh. Giả sử bạn đang đọc một cuốn sách và gặp một từ lạ: bạn sẽ làm gì? Ngày nay, gần như chắc chắn là “tra Google” nhưng hãy giả sử bạn thích một cách cũ hơn: bạn với lấy một cuốn từ điển liệt kê các từ và cung cấp ý nghĩa của chúng. TeX có một cơ chế tương tự: một “từ điển” nội bộ liệt kê tất cả các lệnh hiện được TeX biết—và “ý nghĩa” của những lệnh đó. Ở đây “ý nghĩa” là chúng ta đang nói đến loại lệnh nào: nó làm gì, cộng thêm mọi thông tin khác mà TeX có thể cần để chạy lệnh đó. Cũng lưu ý rằng thuật ngữ “lệnh” bao gồm mọi macro TeX/LaTeX do người dùng/lập trình viên TeX viết ra và [hàng trăm lệnh nguyên thủy tích hợp sẵn](/latex/vi/chu-de-khac/46-tex-primitives-listed-by-tex-engine.md).

Tiếp tục với phép so sánh về từ điển. Khi chúng ta, với tư cách người đọc, cần tra nghĩa của một từ, chúng ta sẽ tìm trong từ điển bằng danh sách từ theo thứ tự bảng chữ cái mà từ điển cung cấp—nhưng dĩ nhiên, TeX không hoạt động hẳn như vậy. Quay lại `jobname` ví dụ ban đầu của chúng ta, làm sao TeX tìm được, trong “từ điển” của nó, “ý nghĩa” của `jobname`—và “ý nghĩa” đó thực ra cung cấp gì cho TeX?

Thay vì cung cấp một “danh sách theo bảng chữ cái” nội bộ của tất cả các lệnh mà TeX biết, nó làm điều gì đó khác một chút. TeX chuyển toàn bộ chuỗi ký tự—có mặt trong tên của một lệnh—thành một số nguyên duy nhất, và số này sẽ được dùng để nhận diện (biểu diễn) lệnh đó. Về mặt nội bộ, TeX duy trì một “từ điển” lớn của tất cả các lệnh đã biết vào đó nó lưu/trữ các *số nguyên* được tính từ tên lệnh—lưu ý rằng từ điển đó không lưu chính tên lệnh dưới dạng các chuỗi chữ cái (gọi là *chuỗi*). TeX dùng từ điển đó cho tất cả các lệnh nguyên thủy tích hợp sẵn của nó *và* nó sẽ dùng nó để lưu chi tiết của bất kỳ macro (lệnh) nào do người dùng tạo: tên macro của bạn được chuyển thành một số nguyên và số nguyên đó được “đăng ký” trong từ điển của TeX.

Mỗi khi TeX phát hiện một lệnh được dùng trong đầu vào của bạn, và cần biết điều gì đó về lệnh đó, nó chuyển dãy ký tự trong tên lệnh thành một số nguyên “tương đương” và dùng số nguyên đó để tra cứu lệnh trong “từ điển lớn” của nó. Những ai là lập trình viên có thể muốn biết rằng TeX dùng một dạng [hàm băm](https://en.wikipedia.org/wiki/Hash_function) hàm băm

![Sơ đồ của một hàm băm](/files/07d06c855b725a6e1e35b41ad46aec1cfc3fa5b1)

### Hình 6: Từ ký tự đến ý nghĩa của lệnh

Hình sau đây cho thấy hành trình mà một lệnh trải qua khi TeX chuyển chuỗi ký tự thành một số nguyên tương đương, và số này được gọi là **curcs**, rồi dùng số nguyên đó để tra cứu ý nghĩa của lệnh trong “từ điển lớn” của TeX. Kết quả của phép tra cứu đó là hai mẩu thông tin: hai số nguyên, gọi là **curcmd** và **curchr**, mà TeX có thể dùng để xác định chính xác lệnh đó làm gì và sau đó thực thi nó như thế nào.

![TeX chuyển một chuỗi ký tự thành một số nguyên tương đương để tra cứu ý nghĩa của lệnh](/files/35a9eaeeff4c29d4567d31419f7fc9fab66f4fbe)

Về mặt nội bộ, TeX duy trì một biến gọi là **curcs** (**cur**rent **c**ontrol **s**equence) được dùng để lưu giá trị số nguyên của lệnh mà TeX hiện đang xử lý—tức là, **curcs** lưu số nguyên được tính từ tên của lệnh. Đó chưa phải toàn bộ câu chuyện vì còn một chi tiết nữa: nếu TeX vừa đọc/xử lý một ký tự, chứ không phải một lệnh, nó sẽ đặt **curcs** thành giá trị 0, để nhớ rằng thứ vừa được đọc vào là một ký tự, không phải một lệnh.

### Ý nghĩa của các lệnh đối với TeX

Nếu chúng ta nhìn vào tập hợp các [lệnh tích hợp sẵn do các bộ máy TeX cung cấp](/latex/vi/chu-de-khac/46-tex-primitives-listed-by-tex-engine.md) chúng ta có thể thấy rằng một số lệnh trong đó có quan hệ rất gần: chúng thực hiện các nhiệm vụ tương tự; ví dụ, có 4 lệnh nguyên thủy mà tất cả các bộ máy TeX đều dùng để định nghĩa (tạo) macro: `\def`, `\gdef`, `\edef`, `\xdef`. Cả 4 lệnh đó đều định nghĩa macro nhưng, dĩ nhiên, mỗi lệnh làm điều đó hơi khác nhau. Nếu nhìn từ góc độ lập trình: ở đây có 4 lệnh định nghĩa macro, nhìn chung làm cùng một việc nhưng chúng ta cần chọn giữa chúng để phù hợp với hành vi riêng của từng lệnh.

Để xử lý điều này, TeX gán hai giá trị cho mỗi lệnh và hai giá trị đó chính là điều TeX hiểu là “ý nghĩa” của một lệnh (vai trò/nó làm gì)—hai giá trị này là nội bộ trong TeX, nằm sâu bên trong phần mềm, và là một phần của “cơ chế bên trong” không người dùng nào truy cập được. Mỗi lệnh TeX, dù là primitive tích hợp sẵn hay lệnh do người dùng định nghĩa, đều được gán hai giá trị mà đối với TeX, chúng định nghĩa/phân loại hành vi của nó—ý nghĩa của nó đối với TeX. Khi TeX dùng “từ điển lớn” của mình để tra cứu một lệnh, nó sẽ tìm thấy hai mẩu thông tin quan trọng đó:

* **mã lệnh**: một dạng “phân loại chung” cho biết nó là loại lệnh gì—chẳng hạn một lệnh “định nghĩa macro” (một trong `\def`, `\gdef`, `\edef`, `\xdef`); một lệnh “tạo hộp” (một trong `\hbox`, `\vbox` hoặc `\vcenter`) và cứ thế cho hàng trăm lệnh mà các bộ máy TeX hỗ trợ. Các macro (lệnh do người dùng định nghĩa) cũng được gán một mã lệnh.
* **bộ sửa đổi lệnh**: Đây là thông tin phụ trợ cung cấp cho TeX thông tin cụ thể về một lệnh. Các macro (lệnh do người dùng định nghĩa) cũng được gán một bộ sửa đổi lệnh—dù với macro, bộ sửa đổi lệnh đóng vai trò hơi khác so với primitive (với macro, bộ sửa đổi lệnh cho biết định nghĩa macro được lưu ở đâu trong bộ nhớ).

Xét chung lại, mã lệnh và bộ sửa đổi lệnh xác định duy nhất từng lệnh. Dưới đây là các mã lệnh và bộ sửa đổi lệnh cho các lệnh định nghĩa macro như được dùng bởi phần mềm TeX gốc của Knuth—lưu ý rằng các bộ máy TeX khác có thể dùng giá trị khác nhưng chúng tuân theo đúng nguyên lý đó:

|          |                                                     |                                                             |
| -------- | --------------------------------------------------- | ----------------------------------------------------------- |
| **Lệnh** | <p><strong>Lệnh</strong><br><strong>mã</strong></p> | <p><strong>Lệnh</strong><br><strong>bộ sửa đổi</strong></p> |
| `\def`   | 97                                                  | 0                                                           |
| `\gdef`  | 97                                                  | 1                                                           |
| `\edef`  | 97                                                  | 2                                                           |
| `\xdef`  | 97                                                  | 3                                                           |

### Ôn tập: hiểu ý nghĩa của tất cả các biến/giá trị này

Đến đây chúng ta đang ngập trong rất nhiều thông tin về các giá trị, biến, giá trị lệnh và đủ thứ chi tiết—điều đó có thể nhanh chóng trở nên rối rắm nên hãy kiểm lại những gì mình biết. Khi TeX đọc một thứ gì đó từ đầu vào, đó hoặc là một ký tự hoặc là một lệnh. Mỗi khi TeX đọc một thứ gì đó từ đầu vào, nó cần lưu thông tin về thứ vừa đọc (quét):

* Đối với **ký tự**: nó cần ghi lại mã ký tự và mã loại. Nó cũng cần tạo và lưu giá trị token mà TeX tính được bằng các giá trị đó.
* Đối với **lệnh**: TeX cần biết giá trị số tương đương, **curcs**, mà nó đã tính từ tên lệnh. Nó cũng có thể cần lưu “ý nghĩa” mà nó truy xuất bằng cách tra cứu lệnh trong “từ điển” của TeX: mã lệnh và bộ sửa đổi lệnh. Trên hết, TeX cũng cần tính một giá trị token đại diện cho lệnh này.

Đúng vậy, thật rối: rất nhiều biến và ý tưởng token lơ lửng khắp nơi, vậy hãy cố gắng làm cho nó sáng sủa hơn.

Về mặt nội bộ, TeX dùng bốn biến toàn cục để lưu thông tin về mục gần nhất mà TeX đã đọc vào (hoặc đang “xử lý”)—chúng ta sẽ không bàn chi tiết nhiều về những biến đó nhưng biết chúng tồn tại sẽ giúp cung cấp thêm bối cảnh để hiểu điều gì thực sự xảy ra:

* **curcmd**: (lệnh hiện tại) một biến số nguyên. Nó được dùng để lưu *lệnh hiện tại* giá trị của lệnh đang được xử lý *hoặc* nó lưu *mã loại* của ký tự đang được xử lý;
* **curchr**: (ký tự hiện tại) một biến số nguyên, nhưng nó lưu gì phụ thuộc vào thứ mà TeX vừa đọc từ đầu vào:
* **ký tự**: Nếu mục vừa được đọc vào gần đây nhất là một ký tự, **curchr** lưu *mã ký tự*.
* **lệnh**: Nếu mục vừa được đọc vào gần đây nhất là một lệnh, **curchr** lưu *bộ sửa đổi lệnh*: thông tin bổ sung mà TeX dùng để hỗ trợ/làm rõ **curcmd**—bởi vì, như chúng ta đã thấy ở trên, một số lệnh chia sẻ cùng một giá trị **curcmd**
* **curcs**: (chuỗi điều khiển hiện tại) một biến số nguyên lưu giá trị được tính từ chuỗi ký tự trong tên lệnh. **curcs** = 0 nếu mục vừa được đọc là một ký tự riêng lẻ chứ không phải tên của một chuỗi điều khiển (tên lệnh);
* **curtok**: (token hiện tại) một biến số nguyên chứa giá trị của token hiện tại—đó hoặc là token lệnh hoặc token ký tự.

Dưới đây là thông tin trên được hiển thị dưới dạng bảng:

|                                            |                                                                                                                                                                                                                      |                                                                                                                                                                                                                                            |
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Biến toàn cục được dùng bên trong TeX:** | **Khi TeX quét một ký tự:**                                                                                                                                                                                          | **Khi TeX quét một lệnh:**                                                                                                                                                                                                                 |
| **curcmd**                                 | Lưu mã loại của ký tự hiện tại                                                                                                                                                                                       | Lưu *mã lệnh*—thứ này xác định “loại” của lệnh hiện tại                                                                                                                                                                                    |
| **curchr**                                 | Lưu mã ký tự của ký tự hiện tại                                                                                                                                                                                      | Lưu dữ liệu bổ sung (gọi là *bộ sửa đổi lệnh*) cung cấp thêm thông tin về lệnh hiện tại                                                                                                                                                    |
| **curcs**                                  | 0                                                                                                                                                                                                                    | Một số nguyên dương khác 0 được tính (thông qua một hàm băm) bằng cách dùng chuỗi ký tự có trong tên lệnh. Nó được dùng để truy cập “từ điển” của TeX nhằm tra cứu ý nghĩa hiện tại của một lệnh—lấy ra mã lệnh và bộ sửa đổi lệnh của nó. |
| **curtok**                                 | Đối với các bộ máy TeX 8-bit, một *token ký tự* được tính theo công thức: $$\text{curtok}=256\times \text{curcmd} + \text{curchr}$$ trong đó $$\text{curcmd}$$ là mã loại của ký tự và $$\text{curchr}$$ là mã ký tự | Đối với các bộ máy TeX 8-bit, một *token lệnh* được tính theo công thức: $$\text{curtok}=4095 + \text{curcs}$$                                                                                                                             |

### Ghi chú thêm về token hiện tại

Đối với ký tự, giá trị token tối đa có thể nhận được bằng cách dùng mã loại lớn nhất (15) và mã ký tự lớn nhất, mà với các bộ máy TeX 8-bit là 255. Về mặt lý thuyết (đối với các bộ máy TeX 8-bit), giá trị token ký tự tối đa, $$\text{curtok}\_{\text{max}}$$, là:

$$\text{curtok}\_{\text{max}}= 256\times 15 + 255 = 4095$$

Chúng ta nói “về mặt lý thuyết” vì mã loại 15 được dùng để biểu thị một “ký tự không hợp lệ” gây cho TeX lỗi: một ký tự không hợp lệ sẽ không bao giờ vượt qua quá trình quét đầu vào của TeX và vì thế sẽ không bao giờ trở thành token ký tự.

Đối với lệnh, token hiện tại ($$\text{curtok}$$) được tính từ $$\text{curtok}=4095 + \text{curcs}$$ nhưng đối với lệnh $$\text{curcs}$$ là *luôn luôn* khác 0, vì vậy TeX có thể dễ dàng xác định token đó đại diện cho cái gì:

* Nếu $$\text{curtok} > 4095$$ thì đó là một token lệnh;
* Nếu $$\text{curtok} < 4095$$ đó là một token ký tự.

Về thực chất, TeX dùng token, một giá trị số nguyên đơn giản, để “đóng gói” mọi thông tin nó cần biết về một mục được đọc từ đầu vào.

## Phần 4

Ở Phần 4 chúng ta khám phá một loạt macro ví dụ để minh họa vai trò và mục đích của macro’s `<parameter text>` phần này như một “mẫu token” có thể được xây dựng thông qua việc dùng các token phân cách.

[Phần 1](/latex/vi/chu-de-khac/19-how-tex-macros-actually-work-part-1.md) [Phần 2](/latex/vi/chu-de-khac/20-how-tex-macros-actually-work-part-2.md) [Phần 3](/latex/vi/chu-de-khac/21-how-tex-macros-actually-work-part-3.md) [Phần 4](/latex/vi/chu-de-khac/22-how-tex-macros-actually-work-part-4.md) [Phần 5](/latex/vi/chu-de-khac/23-how-tex-macros-actually-work-part-5.md) [Phần 6](/latex/vi/chu-de-khac/24-how-tex-macros-actually-work-part-6.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/chu-de-khac/21-how-tex-macros-actually-work-part-3.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.
