نمایش کد در 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=... کد رنگآمیزی نحوی میگیرد.
lstlisting با language=Python
\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 یکیاند. نامی که شناخته نشود کد سادهٔ همعرض و بیرنگ میدهد.
کد از یک فایل
\lstinputlisting و \inputminted در یک نصب TeX کد را از فایل دیگری میخوانند. 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} بگذارید، یا برای رنگآمیزی نحوی درون lstlisting با [language=Python].
آیا minted بدون shell escape کار میکند؟
در Scissor LaTeX بله: محیطهای minted بدون Python یا -shell-escape رنگآمیزی میشوند. در یک نصب TeX، minted همچنان به هر دو نیاز دارد.
چرا شمارهٔ خطهای فهرست کد من نمایش داده نمیشود؟
Scissor LaTeX گزینهٔ numbers=left و دیگر گزینههای چیدمان listings را نادیده میگیرد. فقط زبان خوانده میشود.
هر مثال این صفحه هنگام ساخت سایت با Scissor LaTeX حروفچینی میشود. آخرین بهروزرسانی: 2026-11-07.