Menambahkan kode pemrograman ke LaTex / LyX


10

Mungkin saya hanya menjadi tebal, tetapi saya tidak dapat menemukan cara yang masuk akal untuk hanya menyisipkan kode (python) saya ke lateks tanpa kehilangan semua informasi indent (agak penting untuk python).

Adakah yang punya ide cemerlang? Saya tidak khawatir tentang penyorotan sintaksis; yang saya inginkan adalah kunci tab saya kembali!

Jawaban:


13

Lingkungan favorit saya untuk dicetak ini . Saya menggunakannya untuk memasukkan seluruh file sumber seperti:

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

Anda juga dapat menggunakannya tanpa penginputan file, dan yang lebih penting, menentukan berapa banyak indent itu gobbles sekali disisipkan:

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

Dengan begitu, LaTeX Anda masih terindentasi dengan baik, tetapi kode verbatim Anda tidak. Ini juga menyediakan penyorotan sintaksis, yang saya tahu Anda sebutkan tidak tertarik. Hanya saja, jangan mendefinisikan bahasanya.



2

Aku akan pergi dengan minted, sebagai Fideli disarankan, tetapi baik itu untuk menyadari itu listingspaket , yang merupakan solusi Lateks murni ot masalah.

mintedberasal dari Pygments , sumber stabilo yang ditulis dengan Python. mintedcoimes dengan jembatan Lateks, berdasarkan \write18, dan yang texmentspaket menyediakan satu untuk Pygments. Tidak ada downside minteddibandingkan dengan Pygments yang saya tahu: mungkin keduanya akan digabung pada beberapa titik.


1

Untuk menggunakan paket cantuman, Anda harus menyertakan paket dan memuat bahasa yang diperlukan dalam pembukaan:

\usepackage{listings}
\lstloadlanguages{Python}

Tetapkan beberapa opsi di dalam dokumen:

\lstset{language=Python,tabsize=2}

... lalu Anda dapat memberikan potongan inline:

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

... atau membacanya dari file:

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

... atau tulis kode sebaris: \lstinline!print ("Hello, World!")!


1

Untuk LyX, lihat ini (mengimpor dokumen anak menggunakan format "listing").

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.