Langkau ke kandungan

listings dalam Scissor LaTeX

Pakej listings berfungsi sebahagiannya dalam Scissor LaTeX: lstlisting mengekalkan kod tepat seperti yang ditaip dan mewarnakannya apabila anda memberikan language= pada persekitaran itu, dan \lstinline berfungsi; \lstset, nombor baris, bingkai, kapsyen dan label diabaikan, dan \lstinputlisting dilangkau.

Apa yang dilakukan oleh pakej ini

listings mengatur kod sumber. Persekitaran lstlisting mengekalkan pemisah baris dan jarak, dan dengan language=Python (atau C, Java, SQL ...) ia mengatur kata kunci, ulasan dan rentetan dalam gaya berbeza. Pilihan menambah nombor baris, bingkai, kapsyen dan warna, sama ada bagi setiap penyenaraian atau untuk seluruh dokumen dengan \lstset. \lstinline ialah bentuk sebaris, dan \lstinputlisting membaca kod daripada fail.

Apa yang berfungsi di sini

CiriDalam Scissor LaTeXCatatan
\begin{lstlisting} ... \end{lstlisting}BerfungsiMonospace, tepat seperti yang ditaip.
[language=Python] pada persekitaranBerfungsiWarna sintaks daripada skema tetap.
[language={[Sharp]C}] dan dialek lainBerfungsiDialek dalam kurungan dibaca bersama nama.
\lstinline|code|, \lstinline{code}BerfungsiMonospace, tanpa warna.
numbers=left, frame=single, basicstyle, keywordstyle, backgroundcolorDiabaikanDiabaikan tanpa mesej.
caption=, label=DiabaikanTiada kapsyen dicetak, dan \ref kepada label memaparkan "??".
\lstset{...}, \lstdefinestyle, style=DiabaikanDiabaikan, termasuk language= yang ditetapkan di sana.
\lstinputlisting{file}Tidak disokongDilangkau dengan mesej.
\lstlistoflistings, \lstnewenvironmentTidak disokongDilangkau dengan mesej.

Nama bahasa tidak peka huruf besar-kecil. Warna tersedia untuk bahasa biasa seperti Python, C, C++, C#, Java, JavaScript, Rust, Go, R, MATLAB, SQL, Bash, HTML dan TeX. Nama yang tidak dikenali, seperti Fortran, memberikan kod monospace biasa tanpa mesej.

Contoh

Berikan bahasa pada setiap penyenaraian:

lstlisting dengan language=Python

LaTeXMukadimah: \usepackage{listings}Buka dalam editor (dibuka dalam tab baharu)
\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}
Disusun atur oleh Scissor LaTeX: lstlisting dengan language=Python

Bahasa yang ditetapkan dengan \lstset tidak digunakan, jadi penyenaraian ini tiada warna. Pilihan susun atur seperti numbers dan frame juga diabaikan:

\lstset diabaikan

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

Kod sebaris dengan \lstinline menerima sebarang pembatas, seperti \verb:

\lstinline dalam ayat

LaTeXMukadimah: \usepackage{listings}Buka dalam editor (dibuka dalam tab baharu)
The loop \lstinline|for i in range(44):| runs 44 times, and
\lstinline{total += i} adds up the numbers.
Disusun atur oleh Scissor LaTeX: \lstinline dalam ayat

Penyenaraian berkapsyen di dalam rajah

LaTeXMukadimah: \usepackage{listings}Buka dalam editor (dibuka dalam tab baharu)
\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.
Disusun atur oleh Scissor LaTeX: Penyenaraian berkapsyen di dalam rajah

Keserasian

  • Dari pemasangan TeX ke sini: kod setiap lstlisting dipaparkan. Pindahkan language= daripada \lstset ke setiap penyenaraian untuk mendapatkan warna, dan tampal kod daripada fail \lstinputlisting ke dalam dokumen.
  • Dari sini ke pemasangan TeX: dokumen dikompil di sana tanpa perubahan, dan pilihan anda kemudian digunakan.

Manual penuh terdapat di CTAN: ctan.org/pkg/listings. Lihat juga Penyenaraian kod dalam LaTeX dan minted.

Soalan dan jawapan

Mengapa penyenaraian saya tidak berwarna?

Bahasa itu mungkin ditetapkan dengan \lstset, yang diabaikan di sini. Tulis [language=Python] (atau bahasa anda) selepas \begin{lstlisting}.

Bolehkah saya memaparkan nombor baris?

Belum lagi. numbers=left diterima dan diabaikan.

Setiap contoh di halaman ini disusun atur oleh Scissor LaTeX semasa laman dibina. Kali terakhir dikemas kini 2026-11-07.