การเพิ่มรหัสการเขียนโปรแกรมลงใน LaTex / LyX


10

บางทีฉันแค่หนา แต่ฉันไม่สามารถหาวิธีที่เหมาะสมในการวางโค้ด (python) ของฉันลงในลาเท็กซ์โดยไม่สูญเสียข้อมูลการเยื้องทั้งหมด (ค่อนข้างสำคัญสำหรับงูใหญ่)

ใครมีความคิดที่สดใส? ฉันไม่กังวลเกี่ยวกับการเน้นไวยากรณ์ ทั้งหมดที่ฉันต้องการคือปุ่มแท็บของฉันกลับมาแล้ว!

คำตอบ:


13

สภาพแวดล้อมที่ชื่นชอบสำหรับเรื่องนี้มิ้นต์ ฉันใช้เพื่อป้อนไฟล์ต้นฉบับทั้งหมดเช่น:

\inputminted[linenos,fontsize=\scriptsize]{python}{script.py}

นอกจากนี้คุณยังสามารถใช้งานได้โดยไม่ต้อง inputing ไฟล์และที่สำคัญกว่ากำหนดวิธีการเยื้องมากgobblesวางครั้งเดียว:

\newminted{python}{gobble=4,linenos,fontsize=\scriptsize}
\begin{pythoncode}
    print('I am a Python script')
\end{pythoncode}

ด้วยวิธีนี้ LaTeX ของคุณยังคงได้รับการเยื้องอย่างดี แต่รหัสคำต่อคำของคุณไม่ใช่ นอกจากนี้ยังมีการเน้นไวยากรณ์ซึ่งฉันรู้ว่าคุณพูดถึงคุณไม่สนใจเพียงแค่ไม่ได้กำหนดภาษา


4

คุณจะต้องใช้สภาพแวดล้อมคำต่อคำ: http://web.mit.edu/vogt/www/latex/ltx-79.html

หากปัญหาเกิดขึ้นทันทีเมื่อคุณวางใน ... คุณใช้ IDE เพื่อสร้างเอกสารหรือไม่ ลองเปิดไฟล์ในโปรแกรมแก้ไขข้อความธรรมดาเช่น gedit หรือ notepad


2

ฉันไปกับmintedเป็น fideli ปัญหา แต่มันเป็นเรื่องดีที่จะตระหนักถึงแพคเกจซึ่งเป็นวิธีการแก้ปัญหาน้ำยางบริสุทธิ์ OT ปัญหาlistings

mintedมาจากPygmentsซึ่งเป็นปากกาเน้นข้อความต้นฉบับที่เขียนด้วย Python mintedcoimes กับสะพานยางบนพื้นฐาน\write18และแพคเกจให้หนึ่งสำหรับ Pygments ไม่มีข้อเสียเมื่อเปรียบเทียบกับ Pygments ที่ฉันรู้: บางทีทั้งสองจะถูกรวมเข้าด้วยกันในบางจุดtexmentsminted


1

ในการใช้แพ็คเกจรายชื่อคุณจะต้องรวมแพ็คเกจและโหลดภาษาที่จำเป็นในคำนำ:

\usepackage{listings}
\lstloadlanguages{Python}

ตั้งค่าตัวเลือกบางอย่างภายในเอกสาร:

\lstset{language=Python,tabsize=2}

... และจากนั้นคุณสามารถให้ตัวอย่างแบบอินไลน์:

\begin{lstlisting}
  print ("Hello, World!")
\end{lstlisting}

... หรืออ่านจากไฟล์:

\lstinputlisting[firstline=10,lastline=20]{Hello.py}

... หรือเขียนโค้ดแบบอินไลน์: \lstinline!print ("Hello, World!")!


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.