ข้ามไปยังเนื้อหา

การแสดงโค้ดใน 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.
จัดหน้าโดย Scissor LaTeX: โค้ดในบรรทัดด้วย \verb และ \texttt

\texttt{...} เปลี่ยนเพียงฟอนต์เท่านั้น: อักขระพิเศษอย่าง _ และ % ยังต้อง escape ในนั้น ขณะที่ \verb รับอักขระเหล่านั้นตามที่เป็น

listings: lstlisting พร้อมภาษา

แพ็กเกจ listings ให้สภาพแวดล้อม lstlisting เมื่อใส่ language=... โค้ดจะได้สีไวยากรณ์

lstlisting กับ language=Python

LaTeXส่วนนำ: \usepackage{listings}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{lstlisting}[language=Python]
def total(xs):
    """Add up the numbers in xs."""
    return sum(xs)

print(total([40, 4]))  # 44
\end{lstlisting}
จัดหน้าโดย Scissor LaTeX: lstlisting กับ language=Python

\lstinline|code| เป็นรูปแบบในบรรทัด คล้ายกับ \verb

minted

minted รับภาษาเป็นอาร์กิวเมนต์ ในการติดตั้ง TeX มันต้องใช้ Python และตัวเลือก -shell-escape แต่ใน Scissor LaTeX ใช้ได้โดยไม่ต้องมีทั้งสองอย่าง

minted พร้อมระบุภาษา

LaTeXส่วนนำ: \usepackage{minted}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\begin{minted}{rust}
fn main() {
    let answer = 40 + 4;
    println!("{}", answer);
}
\end{minted}
Inline: \mintinline{rust}{let x = 44;}
จัดหน้าโดย Scissor LaTeX: minted พร้อมระบุภาษา

สิ่งที่ถูกอ่าน

คำสั่งใน Scissor LaTeXหมายเหตุ
verbatim, verbatim*ใช้ได้
\verb, \verb*ใช้ได้
lstlistingใช้ได้บางส่วนอ่าน language= ตัวเลือกอื่นทั้งหมด (numbers, caption, frame, basicstyle, firstline ...) จะถูกละเว้น
\lstinlineใช้ได้ไม่มีสีไวยากรณ์ในบรรทัด
\lstset{...}ถูกตัดออกภาษาที่ตั้งไว้ตรงนี้จะไม่ถูกใช้ ให้ระบุ language= ในแต่ละ listing
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 ถูกข้าม

LaTeXส่วนนำ: \usepackage{listings}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
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 ยังต้องใช้ทั้งสองอย่าง

ทำไมหมายเลขบรรทัดใน listing ของฉันจึงหายไป

Scissor LaTeX ละเว้น numbers=left และตัวเลือกเลย์เอาต์อื่น ๆ ของ listings อ่านเฉพาะภาษาเท่านั้น

ทุกตัวอย่างในหน้านี้จัดหน้าโดย Scissor LaTeX ขณะสร้างเว็บไซต์ อัปเดตล่าสุด 2026-11-07