דילוג לתוכן

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

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: 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 בתוך משפט

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, שלא נלקחת כאן בחשבון. כתבו [language=Python] (או את השפה שלכם) אחרי \begin{lstlisting}.

אפשר להציג מספרי שורות?

עדיין לא. numbers=left מתקבלת ולא נלקחת בחשבון.

כל דוגמה בדף הזה מסודרת על ידי Scissor LaTeX בזמן בניית האתר. עודכן לאחרונה: 2026-11-07.