Hiển thị mã nguồn chương trình trong LaTeX
Đặt mã trong môi trường verbatim, lstlisting hoặc minted, hoặc dùng \verb|...| ngay trong dòng; Scissor LaTeX trình bày nó bằng phông chữ đơn cách đúng như bạn gõ và tô màu cú pháp khi bạn nêu tên ngôn ngữ.
verbatim
Bên trong verbatim, không có gì được diễn giải: dấu gạch chéo ngược, dấu ngoặc nhọn, $ và % được in ra nguyên dạng, còn các lần xuống dòng và khoảng trắng được giữ lại. Đây là cách đơn giản nhất để hiển thị mã hoặc kết quả từ cửa sổ dòng lệnh.
Một khối verbatim
\begin{verbatim}
for i in range(44):
print(i) # $ and \textbf stay as typed
\end{verbatim}Mã trong dòng: \verb
\verb hiển thị một đoạn mã ngắn bên trong câu. Ký tự ngay sau \verb là ký tự phân cách; hãy chọn một ký tự không có trong mã, như | hoặc +.
Mã trong dòng với \verb và \texttt
Call \verb|total(xs)| to add the list, or type \verb+x_1 = 44+.
For plain words in a monospaced font, \texttt{main.tex} is enough.\texttt{...} chỉ thay đổi phông chữ: các ký tự đặc biệt như _ và % vẫn cần được thoát ở đó, trong khi \verb nhận chúng nguyên dạng.
listings: lstlisting với một ngôn ngữ
Gói listings cung cấp cho bạn lstlisting. Với language=..., mã được tô màu cú pháp.
lstlisting với language=Python
\begin{lstlisting}[language=Python]
def total(xs):
"""Add up the numbers in xs."""
return sum(xs)
print(total([40, 4])) # 44
\end{lstlisting}\lstinline|code| là dạng dùng trong dòng, giống như \verb.
minted
minted nhận ngôn ngữ làm đối số. Trong một bản cài đặt TeX, nó cần Python và tùy chọn -shell-escape; trong Scissor LaTeX, nó hoạt động mà không cần cả hai.
minted với một ngôn ngữ
\begin{minted}{rust}
fn main() {
let answer = 40 + 4;
println!("{}", answer);
}
\end{minted}
Inline: \mintinline{rust}{let x = 44;}Những gì được đọc
| Lệnh | Trong Scissor LaTeX | Ghi chú |
|---|---|---|
verbatim, verbatim* | Hoạt động | |
\verb, \verb* | Hoạt động | |
lstlisting | Một phần | language= được đọc; mọi tùy chọn khác (numbers, caption, frame, basicstyle, firstline ...) bị bỏ qua. |
\lstinline | Hoạt động | Không tô màu cú pháp trong dòng. |
\lstset{...} | Bị bỏ qua | Ngôn ngữ đặt ở đây không được dùng; hãy ghi language= cho từng đoạn mã. |
minted | Một phần | Ngôn ngữ được đọc; các tùy chọn như linenos và frame bị bỏ qua. |
\mintinline{lang}{code} | Hoạt động | Không tô màu cú pháp trong dòng. |
Verbatim, BVerbatim (fancyvrb) | Một phần | Hiển thị như verbatim; các tùy chọn bị bỏ qua. |
\lstinputlisting{file}, \inputminted{lang}{file} | Không hỗ trợ | Bị bỏ qua kèm thông báo; hãy dán mã vào tài liệu. |
\lstnewenvironment, \newminted | Không hỗ trợ |
Màu cú pháp có sẵn cho các ngôn ngữ phổ biến, trong đó có Python, C, C++, Java, JavaScript, TypeScript, Rust, Go, Ruby, R, Julia, MATLAB, SQL, Bash, HTML, CSS, JSON, YAML, TeX và LaTeX. Tên ngôn ngữ không phân biệt chữ hoa chữ thường, nên Python và python là như nhau. Một tên không được nhận ra sẽ cho mã đơn cách không tô màu.
Mã từ một tệp
Trong một bản cài đặt TeX, \lstinputlisting và \inputminted đọc mã từ một tệp khác. Scissor LaTeX bỏ qua chúng và báo điều đó trong thẻ Sự cố:
\lstinputlisting bị bỏ qua
The script below is not shown:
\lstinputlisting[language=Python]{scripts/total.py}
Paste the code into an lstlisting environment instead.Thẻ Sự cố: 1 included file is not part of this conversion
Khác biệt so với một bản cài đặt TeX
Xem listings và minted để biết trang về các gói này. Tài liệu hướng dẫn đầy đủ có trên CTAN: listings, minted và fancyvrb.
Hỏi và đáp
Làm thế nào để thêm một khối mã trong LaTeX?
Đặt mã trong \begin{verbatim} ... \end{verbatim}, hoặc trong lstlisting với [language=Python] để có màu cú pháp.
minted có hoạt động mà không cần shell escape không?
Trong Scissor LaTeX thì có: các môi trường minted được tô màu mà không cần Python hay -shell-escape. Trong một bản cài đặt TeX, minted vẫn cần cả hai.
Vì sao số dòng trong đoạn mã của tôi bị mất?
Scissor LaTeX bỏ qua numbers=left và các tùy chọn bố cục khác của listings. Chỉ ngôn ngữ được đọc.
Mọi ví dụ trên trang này đều được Scissor LaTeX dàn trang khi xây dựng trang web. Cập nhật lần cuối 2026-11-07.