การแสดงโค้ดใน 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{...} เปลี่ยนเพียงฟอนต์เท่านั้น: อักขระพิเศษอย่าง _ และ % ยังต้อง escape ในนั้น ขณะที่ \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= ในแต่ละ 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 ถูกข้าม
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