跳到主要內容

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

LaTeX導言區: \usepackage{listings}在編輯器中開啟 (在新分頁中開啟)
\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}
由 Scissor LaTeX 排版: 使用 language=Python 的 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

LaTeX導言區: \usepackage{listings}在編輯器中開啟 (在新分頁中開啟)
The loop \lstinline|for i in range(44):| runs 44 times, and
\lstinline{total += i} adds up the numbers.
由 Scissor LaTeX 排版: 句子中的 \lstinline

放在 figure 中、有標題的程式碼清單

LaTeX導言區: \usepackage{listings}在編輯器中開啟 (在新分頁中開啟)
\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.
由 Scissor LaTeX 排版: 放在 figure 中、有標題的程式碼清單

相容性

  • 從 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