> 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/bai-viet-chuyen-sau/30-how-to-write-in-markdown-on-overleaf.md).

# Cách viết Markdown trên Overleaf

**Cập nhật sau khi xuất bản** (thêm ngày 13 tháng 5 năm 2017): Chúng tôi rất biết ơn Vít Novotný, tác giả/người bảo trì của `markdown` gói, vì đã viết thư cho chúng tôi với một số phản hồi hữu ích liên quan đến bài viết gốc. Chúng tôi vui mừng công bố phiên bản cập nhật này, phiên bản đã ghi nhận và bao gồm các lời khuyên cũng như đề xuất của anh ấy.

### Hả, gì cơ?

[Markdown](https://kirkstrobeck.github.io/whatismarkdown.com/) là một ngôn ngữ đánh dấu nhẹ (hiểu chưa? 😉) cho phép bạn viết nội dung bằng văn bản thuần với một số *rất* quy tắc đơn giản, rồi chuyển nó thành đầu ra đã định dạng, ví dụ như HTML. Nó rất phổ biến trong giới phát triển phần mềm và lập trình viên, chính vì sự đơn giản của nó (và tôi xin nói thêm rằng, nó cũng rất phù hợp để ghi chú nữa!).

Ví dụ, để viết một danh sách mua sắm nhanh:

```
# Danh sách thực phẩm
*Nhớ* mua càng nhiều càng tốt trong các đợt [khuyến mãi](http://acme-marg.com) sắp tới!
## Thực phẩm
- đậu nướng
- spaghetti
## Văn phòng phẩm
- tập giấy viết
- bút chì
```

Và bạn sẽ nhận được đầu ra HTML, bằng cách dùng một công cụ như [pandoc](http://pandoc.org/):

```html
<h1 id="grocerylist">Danh sách thực phẩm</h1>
<p><em>Nhớ</em> mua càng nhiều càng tốt trong các <a href="http://acme-marg.com">đợt khuyến mãi</a> sắp tới!</p>
<h2 id="food">Thực phẩm</h2>
<ul>
<li>đậu nướng</li>
<li>spaghetti</li>
</ul>
<h2 id="stationery">Văn phòng phẩm</h2>
<ul>
<li>tập giấy viết</li>
<li>bút chì</li>
</ul>
```

Thật gọn gàng và đơn giản! Bạn có thể tìm thấy cú pháp khác cho Markdown [ở đây](https://daringfireball.net/projects/markdown/syntax).

### Vậy điều này có nghĩa gì đối với tôi?

Nhiều người dùng LaTeX hài lòng với các tài liệu được dàn trang đẹp mắt bằng LaTeX, nhưng cũng không khỏi thấy hơi ghen tị với người dùng Markdown—vì, ừm, cú pháp đánh dấu của LaTeX *có thể* đôi khi khá dài dòng. Vâng, các danh sách, chúng tôi đang nói đến *bạn*...

Tin tốt là gói LaTeX mới tuyệt vời [`markdown` gói LaTeX](https://ctan.org/pkg/markdown) cho phép bạn viết cú pháp markdown trong các tài liệu LaTeX của mình (tức là đầu vào đơn giản hơn) mà vẫn nhận được các PDF được dàn trang đẹp mắt! Tất cả những gì bạn cần làm là nạp `markdown` gói trong tài liệu của bạn, và bao toàn bộ nội dung Markdown của bạn trong một `markdown` môi trường:

```latex
\documentclass{article}
\usepackage{markdown}
\begin{document}
\begin{markdown}
# Danh sách thực phẩm

*Nhớ* mua càng nhiều càng tốt trong các đợt [khuyến mãi](http://acme-marg.com) sắp tới!

## Thực phẩm

- đậu nướng
- spaghetti

## Văn phòng phẩm

- tập giấy viết
- bút chì
\end{markdown}
\end{document}
```

Hoặc nếu bạn thích đặt nội dung Markdown của mình trong một `*.md` tệp:

```latex
\documentclass{article}
\usepackage{markdown}
\begin{document}
\markdownInput{example.md}
\end{document}
```

Tuyệt! Điều này rất có thể sẽ làm cho các kiểu nhà phát triển rất vui vì giờ họ chỉ cần sao chép trực tiếp `.md` tài liệu của mình!

### Tôi vẫn có thể dùng các lệnh LaTeX nếu tôi viết Markdown không?

Có, bạn vẫn có thể dùng các lệnh LaTeX trong nội dung Markdown của mình! Chỉ cần truyền `hybrid` tùy chọn thành `markdown`:

```latex
\usepackage[hybrid]{markdown}
...
- tập giấy viết (loại có công thức $E=mc^2$ lớn trên bìa)
```

### Tôi có thể dùng các ký tự nguyên văn như '#' và '\_' (dấu gạch dưới) bằng cách nào?

#### Gõ một ký tự '#'

Bạn không thể gõ ký tự '#' *bên trong `markdown` môi trường*. Ngay cả `\#` cũng không hoạt động. Bạn cần định nghĩa một lệnh như `\newcommand{\texthash}{\#}`rồi sau đó dùng `\texthash` trong phần tiền đề của `markdown` môi trường. Tương tự với dấu gạch dưới, đặc biệt khi có nhiều hơn một dấu trên cùng một dòng, ví dụ như `$y = m_1 + n_2$`. Đôi khi có thể dễ hơn nếu kết thúc `markdown` môi trường hiện tại và viết các dòng có vấn đề trong chế độ LaTeX thông thường, rồi bắt đầu một `markdown` môi trường.

#### Gõ '\_' (dấu gạch dưới) và '\`' (dấu backtick)

**Cập nhật** (thêm ngày 13 tháng 5 năm 2017): Kể từ `markdown` phiên bản 2.5 bạn có thể đặt `underscores = false` và `codeSpans = false` để vô hiệu hóa dấu gạch dưới và backtick. Điều này giúp có thể viết chỉ số dưới trong toán học và dấu ngoặc kép trong chế độ lai mà không cần thoát ký tự. Chúng ta có dấu sao cho phần nhấn mạnh, nên thứ duy nhất thực sự mất đi là các ví dụ mã nội tuyến. Cảm ơn Vít vì mẹo này!

#### Các môi trường cần tránh...

Và trong khi bạn có thể dùng backtick để viết nguyên văn nội tuyến, hoặc thụt vào dòng với bốn khoảng trắng cho một khối nguyên văn, đừng dùng `lstlisting` cũng không `minted` các môi trường LaTeX bên trong `markdown` các môi trường. Đừng làm vậy.

#### Dùng HTML trong một môi trường markdown

Và không, bạn không thể dùng HTML bên trong `markdown` môi trường LaTeX (mặc dù đây là điều thường làm trong Markdown thông thường). Xin lỗi.

**Cập nhật** (thêm ngày 13 tháng 5 năm 2017): Kể từ `markdown` v2.3, có một `html` tùy chọn sẽ không hiển thị nguyên văn các thẻ HTML nếu chúng có trong nội dung markdown của bạn, dù nó cũng sẽ không thực sự định dạng nội dung của thẻ—tức là `<strong>Xin chào!</strong>` sẽ chỉ hiển thị Xin chào! ở kiểu chữ thường. Nhưng các thực thể HTML như `&copy;` sẽ được hiển thị thành ©. Cảm ơn Vít đã chỉ ra điều này.

### Các tùy chọn gói markdown được đề xuất

Một bộ `markdown` tùy chọn gói mà bạn có thể thấy hữu ích là:

```latex
\usepackage[footnotes,definitionLists,hashEnumerators,smartEllipses,hybrid]{markdown}
```

Các tùy chọn đó cho phép dùng

* cú pháp markdown cho chú thích cuối trang (như `[^1]`);
* danh sách định nghĩa và `#` cho danh sách đánh số;
* dấu ba chấm "đúng chuẩn" (…).

Đây là một [ví dụ hoàn chỉnh](https://www.overleaf.com/latex/examples/using-markdown-in-latex-documents/whdrnpcpnwrm) trong thư viện Overleaf, và đây là [một ví dụ khác](https://www.overleaf.com/articles/how-to-write-using-rich-text-format-and-markdown-in-latex-and-overleaf/dbqrxvftzskw).

### Siêu liên kết và chú thích cuối trang: như thế nào?

Trong ví dụ Overleaf, siêu liên kết là một chú thích cuối trang. Làm sao để nó trở thành một siêu liên kết hyperref?

`markdown` có thể tùy chỉnh, vì vậy bạn có thể định nghĩa cách bạn muốn các phần tử khác nhau được hiển thị. Thêm những dòng này vào phần mở đầu của bạn sẽ làm đúng như vậy:

```latex
\markdownSetup{renderers={
  link = {\href{#2}{#1}}
}}
```

**Cập nhật** (thêm ngày 13 tháng 5 năm 2017): `rendererPrototypes` đã được dùng trong phiên bản đầu tiên. Khuyến nghị người dùng thông thường dùng `renderers` cho các định nghĩa của riêng họ, vì `rendererPrototypes` được dành cho nhà tạo gói để cung cấp các giá trị mặc định. Nếu bạn sửa đổi `rendererPrototypes`, bạn sẽ có nguy cơ một gói khác ghi đè các cài đặt của bạn. Cảm ơn Vít đã chỉ ra điều này!

### Bao gồm hình ảnh (cập nhật ngày 8 tháng 11 năm 2022)

* **Lưu ý**: Ví dụ tiếp theo sử dụng một tệp đồ họa (`example-image.pdf`) được cung cấp bởi `mwe` gói. Các tệp đồ họa này được phân phối bởi TeX Live và vì thế được lưu trữ trên máy chủ của Overleaf, khiến chúng có sẵn làm hình giữ chỗ, như ví dụ dưới đây.

Có thể chèn hình ảnh vào markdown bằng cách viết đánh dấu theo định dạng sau:

```latex
![alt-text](file-name "image caption")
```

Hy vọng rằng, các tên tham số `văn bản thay thế`, `tên tệp` và `"chú thích hình ảnh"` mô tả chúng làm gì. Đây là một ví dụ để minh họa:

```latex
\documentclass{article}
\usepackage[hybrid]{markdown}
% Gói mwe cung cấp các ảnh mẫu. Việc tải nó là
% không cần thiết vì những ảnh đó nằm trong đường dẫn tìm kiếm của LaTeX.
% Ở đây, chúng tôi tải nó để rõ ràng hơn trong ví dụ này.
\usepackage{mwe}
\begin{document}
\begin{markdown}
Ví dụ này cho thấy cách nhập một tệp đồ họa. Ở đây chúng ta đang sử dụng một
hình ảnh mẫu do gói `mwe` cung cấp.

% Dùng \setkeys{Gin} nếu bạn cần thay đổi kích thước hiển thị của hình ảnh

\setkeys{Gin}{width=.5\linewidth}
![Đây là văn bản thay thế để mô tả hình ảnh của tôi.](example-image.jpg "Một hình ảnh mẫu do gói \texttt{mwe} cung cấp.")
\end{markdown}
\end{document}
```

[Mở ví dụ này trên Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Using+images+in+markdown\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bhybrid%5D%7Bmarkdown%7D%0A%25+The+mwe+package+provides+example+images.+Loading+it+is%0A%25+not+essential+because+those+images+are+in+LaTeX%27s+search+path.+%0A%25+Here%2C+we+load+it+for+clarity+in+this+example.%0A%5Cusepackage%7Bmwe%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Bmarkdown%7D%0AThis+example+shows+how+to+import+a+graphics+file.+Here+we+are+using+an%0Aexample+image+provided+by+the+%60mwe%60+package.%0A%0A%25+Use+%5Csetkeys%7BGin%7D+if+you+need+to+change+an+image%27s+display+size%0A%0A%5Csetkeys%7BGin%7D%7Bwidth%3D.5%5Clinewidth%7D%0A%21%5BThis+is+alt+text+to+describe+my+image.%5D%28example-image.jpg+%22An+example+image+provided+by+the+%5Ctexttt%7Bmwe%7D+package.%22%29%0A%5Cend%7Bmarkdown%7D%0A%5Cend%7Bdocument%7D)

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

![Minh họa cách nhập hình ảnh trong markdown](/files/d5af8565aae393bba6ef5cf02f7eb8e78a1e4055)

#### Lưu ý về chiều rộng của hình ảnh

Giống như hầu hết các gói, `markdown` gói này tải các gói khác, bao gồm [`keyval`](https://ctan.org/pkg/keyval?lang=en) và [`graphicx`](https://ctan.org/pkg/graphicx?lang=en), để tận dụng các lệnh và tính năng mà chúng cung cấp. Ở đây, chiều rộng của hình ảnh được đặt bằng `\setkeys` lệnh, được cung cấp bởi `keyvals`. `Gin` là một "họ" các khóa được định nghĩa bởi `graphicx` gói.

* **Lưu ý**: Vì một lệnh LaTeX, ở đây `\setkeys`, được sử dụng *trong* trang `markdown` môi trường,  `hybrid` tùy chọn của gói markdown là bắt buộc.

#### Thay đổi các định danh vị trí nổi (nâng cao hơn)

Cú pháp markdown để chèn hình không cho phép bạn chỉ định trực tiếp các định danh vị trí nổi, nhưng bạn có thể điều chỉnh chúng bằng cách định nghĩa lại cách hình được hiển thị:

```latex
\markdownSetup{renderers={
  image = {\begin{figure}[hbt!]
    \centering
    \includegraphics{#3}%
    \ifx\empty#4\empty\else
    \caption{#4}%
    \fi
    \end{figure}}
}}
```

Để biết thêm thông tin, hãy tham khảo [tài liệu markdown](https://mirror.apps.cam.ac.uk/pub/tex-archive/macros/generic/markdown/markdown.html).

### Bạn có thể tạo bảng bằng markdown trong LaTeX không? 😀

Rất tiếc là không. Bảng chỉ được hỗ trợ trong [MultiMarkdown](http://fletcherpenney.net/multimarkdown/) mà thôi, và gói LaTeX `markdown` hiện tại không hỗ trợ tính năng này.

**Cập nhật** (thêm ngày 13 tháng 5 năm 2017): Dựa trên một mẹo từ Vít, có thể dùng `contentBlocks` tiện ích mở rộng cú pháp kể từ phiên bản 2.4, hoặc tinh chỉnh `inputFencedCode` renderer, để nhanh chóng chuyển một số văn bản kiểu CSV thành một bảng.

### Thêm nhiều tiện ích của gói markdown... ?

Như đã đề cập trước đó, đây là một cách hay để ghi chú, và khi kết hợp với một số lớp tài liệu LaTeX hoặc thiết lập gói phù hợp, nó cho phép bạn có một cuốn sổ tay đẹp mắt ngay từ chính buổi giảng. Ví dụ, bạn có thể dùng nó với [các lớp Tufte](https://www.overleaf.com/gallery/tagged/tufte):

```latex
\documentclass{tufte-handout}
\usepackage[footnotes,definitionLists,hashEnumerators,smartEllipses, hybrid]{markdown}
\begin{document}
\markdownInput{PHY303-lecture-12Nov2016.md}
\end{document}
```

Và cú pháp ngắn gọn, đơn giản giúp việc viết danh sách thuận tiện hơn rất nhiều có nghĩa là giờ đây chúng ta có một *thật nhanh* cách viết [bài thuyết trình Beamer](https://www.overleaf.com/latex/examples/writing-beamer-slides-with-markdown/dnrwnjrpjjhw) và [áp phích](https://www.overleaf.com/latex/examples/writing-beamer-slides-with-markdown/dnrwnjrpjjhw)!

Chúc vui vẻ!


---

# 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/bai-viet-chuyen-sau/30-how-to-write-in-markdown-on-overleaf.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.
