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!

Andrew Bolster
sumber

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.

fideli
sumber
4

Anda ingin menggunakan lingkungan kata demi kata: http://web.mit.edu/vogt/www/latex/ltx-79.html

Jika masalahnya segera ketika Anda menempelkannya di ... apakah Anda menggunakan IDE untuk membuat dokumen? Coba buka file dalam editor teks biasa seperti gedit atau notepad.

oadams
sumber
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.

Charles Stewart
sumber
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!")!

RolKau
sumber
1

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

Sparkler
sumber