رفتن به محتوا

listings در Scissor LaTeX

بستهٔ 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، بدون پیام کد ساده و هم‌عرض می‌دهد.

نمونه‌ها

زبان را روی هر فهرست کد بدهید:

lstlisting با language=Python

\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: lstlisting با language=Python

زبانی که با \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.
حروف‌چینی با Scissor LaTeX: \lstinline در یک جمله

فهرست کد زیرنویس‌دار درون یک شکل

\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: فهرست کد زیرنویس‌دار درون یک شکل

سازگاری

  • از یک نصب 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.