Scissor LaTeX 中的 listings
listings 套件在 Scissor LaTeX 中部分可用:lstlisting 會完全照你輸入的樣子保留程式碼,在環境上指定 language= 時還會上色,\lstinline 也能用;\lstset、行號、外框、標題和標籤會被忽略,\lstinputlisting 則會被略過。
套件的用途
listings 用來排版原始碼。lstlisting 環境會保留換行和空格,搭配 language=Python(或 C、Java、SQL ...)時,會以不同樣式顯示關鍵字、註解和字串。選項可以加上行號、外框、標題和顏色,可以針對單一程式碼清單設定,也可以用 \lstset 套用到整份文件。\lstinline 是行內形式,\lstinputlisting 則從檔案讀取程式碼。
在這裡可用的功能
| 功能 | 在 Scissor LaTeX 中 | 備註 |
|---|---|---|
\begin{lstlisting} ... \end{lstlisting} | 可用 | 等寬字型,完全照輸入的樣子。 |
環境上的 [language=Python] | 可用 | 使用固定配色的語法顏色。 |
[language={[Sharp]C}] 及其他方言 | 可用 | 方括號中的方言會和名稱一起讀取。 |
\lstinline|code|, \lstinline{code} | 可用 | 等寬字型,沒有顏色。 |
numbers=left, frame=single, basicstyle, keywordstyle, backgroundcolor | 忽略 | 直接忽略,沒有訊息。 |
caption=, label= | 忽略 | 不會印出標題,指向該標籤的 \ref 會顯示「??」。 |
\lstset{...}, \lstdefinestyle, style= | 忽略 | 會被忽略,包括在那裡設定的 language=。 |
\lstinputlisting{file} | 不支援 | 會被略過並顯示訊息。 |
\lstlistoflistings, \lstnewenvironment | 不支援 | 會被略過並顯示訊息。 |
語言名稱不分大小寫。Python、C、C++、C#、Java、JavaScript、Rust、Go、R、MATLAB、SQL、Bash、HTML 和 TeX 等常用語言都有顏色。無法辨識的名稱(例如 Fortran)會產生沒有顏色的等寬程式碼,不會顯示訊息。
範例
在每個程式碼清單上指定語言:
使用 language=Python 的 lstlisting
\begin{lstlisting}[language=Python]
def mean(values):
# average of a list of numbers
return sum(values) / len(values)
print(mean([40, 44, 48]))
\end{lstlisting}用 \lstset 設定的語言不會被使用,所以這個程式碼清單沒有顏色。numbers 和 frame 等版面選項也會被忽略:
\lstset 會被忽略
\documentclass{article}
\usepackage{listings}
\lstset{language=SQL, numbers=left, frame=single}
\begin{document}
\begin{lstlisting}
SELECT name FROM staff WHERE id = 44;
\end{lstlisting}
\begin{lstlisting}[language=SQL]
SELECT name FROM staff WHERE id = 44;
\end{lstlisting}
\end{document}用 \lstinline 寫的行內程式碼可以使用任何定界符,就像 \verb 一樣:
句子中的 \lstinline
The loop \lstinline|for i in range(44):| runs 44 times, and
\lstinline{total += i} adds up the numbers.放在 figure 中、有標題的程式碼清單
\begin{figure}[h]
\begin{lstlisting}[language=Python]
print(sum(range(44)))
\end{lstlisting}
\caption{Adding the numbers below 44}
\label{lst:sum}
\end{figure}
The code in Listing~\ref{lst:sum} prints 946.相容性
- 從 TeX 安裝環境搬到這裡:每個
lstlisting的程式碼都會顯示。請把language=從\lstset移到每個程式碼清單上以取得顏色,並把\lstinputlisting檔案中的程式碼貼進文件中。 - 從這裡搬到 TeX 安裝環境:文件在那裡不需修改就能編譯,你的選項也會套用。
完整手冊在 CTAN 上:ctan.org/pkg/listings。另請參閱 LaTeX 程式碼清單和 minted。
常見問題
為什麼我的程式碼清單沒有顏色?
語言可能是用 \lstset 設定的,而它在這裡會被忽略。請在 \begin{lstlisting} 後面寫上 [language=Python](或你使用的語言)。
可以顯示行號嗎?
目前還不行。numbers=left 會被接受並忽略。
本頁的每個範例都在建置網站時由 Scissor LaTeX 排版。 最後更新:2026-11-07