跳到主要內容

LaTeX 中的程式碼清單

把程式碼放進 verbatim、lstlisting 或 minted 環境,或在行內使用 \verb|...|;Scissor LaTeX 會以等寬字型照輸入的樣子排版,並在你指定程式語言時為語法上色。

verbatim

在 verbatim 中,任何內容都不會被解讀:反斜線、大括號、$ 和 % 都照原樣印出,換行和空格也會保留。這是顯示程式碼或終端機輸出最簡單的方式。

verbatim 區塊

\begin{verbatim}
for i in range(44):
    print(i)   # $ and \textbf stay as typed
\end{verbatim}

行內程式碼:\verb

\verb 可以在句子中顯示一小段程式碼。緊接在 \verb 後面的字元就是分隔符號;請挑一個程式碼中沒有出現的字元,例如 | 或 +。

用 \verb 和 \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.
由 Scissor LaTeX 排版: 用 \verb 和 \texttt 顯示行內程式碼

\texttt{...} 只會改變字型:在其中,_ 和 % 等特殊字元仍然需要跳脫,而 \verb 則會照原樣接受它們。

listings:指定程式語言的 lstlisting

listings 套件提供 lstlisting。加上 language=... 後,程式碼就會有語法顏色。

使用 language=Python 的 lstlisting

LaTeX導言區: \usepackage{listings}在編輯器中開啟 (在新分頁中開啟)
\begin{lstlisting}[language=Python]
def total(xs):
    """Add up the numbers in xs."""
    return sum(xs)

print(total([40, 4]))  # 44
\end{lstlisting}
由 Scissor LaTeX 排版: 使用 language=Python 的 lstlisting

\lstinline|code| 是它的行內形式,用法和 \verb 一樣。

minted

minted 以參數指定程式語言。在 TeX 安裝環境中,它需要 Python 和 -shell-escape 選項;在 Scissor LaTeX 中,兩者都不需要就能運作。

指定程式語言的 minted

LaTeX導言區: \usepackage{minted}在編輯器中開啟 (在新分頁中開啟)
\begin{minted}{rust}
fn main() {
    let answer = 40 + 4;
    println!("{}", answer);
}
\end{minted}
Inline: \mintinline{rust}{let x = 44;}
由 Scissor LaTeX 排版: 指定程式語言的 minted

會讀取哪些內容

指令在 Scissor LaTeX 中備註
verbatim、verbatim*可以使用
\verb、\verb*可以使用
lstlisting部分支援會讀取 language=;其他所有選項(numbers、caption、frame、basicstyle、firstline ...)都會被忽略。
\lstinline可以使用行內沒有語法顏色。
\lstset{...}被省略在這裡設定的程式語言不會被使用;請在每個程式碼清單上指定 language=。
minted部分支援會讀取程式語言;linenos 和 frame 等選項會被忽略。
\mintinline{lang}{code}可以使用行內沒有語法顏色。
Verbatim、BVerbatim(fancyvrb)部分支援以 verbatim 顯示;選項會被忽略。
\lstinputlisting{file}、\inputminted{lang}{file}不支援會被略過並顯示訊息;請把程式碼貼進文件中。
\lstnewenvironment、\newminted不支援

常見的程式語言都有語法顏色,包括 Python、C、C++、Java、JavaScript、TypeScript、Rust、Go、Ruby、R、Julia、MATLAB、SQL、Bash、HTML、CSS、JSON、YAML、TeX 和 LaTeX。程式語言名稱不分大小寫,所以 Python 和 python 是一樣的。無法辨識的名稱會產生沒有顏色的等寬程式碼。

來自檔案的程式碼

在 TeX 安裝環境中,\lstinputlisting 和 \inputminted 會從另一個檔案讀取程式碼。Scissor LaTeX 會略過它們,並在「問題」分頁中說明:

\lstinputlisting 會被略過

LaTeX導言區: \usepackage{listings}在編輯器中開啟 (在新分頁中開啟)
The script below is not shown:
\lstinputlisting[language=Python]{scripts/total.py}
Paste the code into an lstlisting environment instead.

「問題」分頁: 1 included file is not part of this conversion

與 TeX 安裝環境的差異

套件頁面請見 listings 和 minted。完整的使用手冊位於 CTAN:listings、minted 和 fancyvrb。

常見問題

怎麼在 LaTeX 中加入程式碼區塊?

用 \begin{verbatim} ... \end{verbatim} 包住程式碼,或使用加上 [language=Python] 的 lstlisting 來取得語法顏色。

minted 不用 shell escape 也能運作嗎?

在 Scissor LaTeX 中可以:minted 環境不需要 Python 或 -shell-escape 就會上色。在 TeX 安裝環境中,minted 仍然需要這兩者。

為什麼我的程式碼清單沒有行號?

Scissor LaTeX 會忽略 numbers=left 和 listings 的其他版面選項。只有程式語言會被讀取。

本頁的每個範例都在建置網站時由 Scissor LaTeX 排版。 最後更新:2026-11-07