Chuyển đến nội dung

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.
Dàn trang bởi Scissor LaTeX: Mã trong dòng với \verb và \texttt

\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

LaTeXPhần mở đầu: \usepackage{listings}Mở trong trình soạn (mở trong thẻ mới)
\begin{lstlisting}[language=Python]
def total(xs):
    """Add up the numbers in xs."""
    return sum(xs)

print(total([40, 4]))  # 44
\end{lstlisting}
Dàn trang bởi Scissor LaTeX: lstlisting với language=Python

\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ữ

LaTeXPhần mở đầu: \usepackage{minted}Mở trong trình soạn (mở trong thẻ mới)
\begin{minted}{rust}
fn main() {
    let answer = 40 + 4;
    println!("{}", answer);
}
\end{minted}
Inline: \mintinline{rust}{let x = 44;}
Dàn trang bởi Scissor LaTeX: minted với một ngôn ngữ

Những gì được đọc

LệnhTrong Scissor LaTeXGhi chú
verbatim, verbatim*Hoạt động
\verb, \verb*Hoạt động
lstlistingMột phầnlanguage= được đọc; mọi tùy chọn khác (numbers, caption, frame, basicstyle, firstline ...) bị bỏ qua.
\lstinlineHoạt độngKhông tô màu cú pháp trong dòng.
\lstset{...}Bị bỏ quaNgôn ngữ đặt ở đây không được dùng; hãy ghi language= cho từng đoạn mã.
mintedMột phầnNgôn ngữ được đọc; các tùy chọn như linenos và frame bị bỏ qua.
\mintinline{lang}{code}Hoạt độngKhông tô màu cú pháp trong dòng.
Verbatim, BVerbatim (fancyvrb)Một phầnHiể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, \newmintedKhô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

LaTeXPhần mở đầu: \usepackage{listings}Mở trong trình soạn (mở trong thẻ mới)
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.