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.\texttt{...} 只會改變字型:在其中,_ 和 % 等特殊字元仍然需要跳脫,而 \verb 則會照原樣接受它們。
listings:指定程式語言的 lstlisting
listings 套件提供 lstlisting。加上 language=... 後,程式碼就會有語法顏色。
使用 language=Python 的 lstlisting
\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| 是它的行內形式,用法和 \verb 一樣。
minted
minted 以參數指定程式語言。在 TeX 安裝環境中,它需要 Python 和 -shell-escape 選項;在 Scissor LaTeX 中,兩者都不需要就能運作。
指定程式語言的 minted
\begin{minted}{rust}
fn main() {
let answer = 40 + 4;
println!("{}", answer);
}
\end{minted}
Inline: \mintinline{rust}{let x = 44;}會讀取哪些內容
| 指令 | 在 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 會被略過
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