Dodanie kodu programowania do LaTex / LyX


10

Może po prostu jestem gruby, ale nie mogę znaleźć żadnego rozsądnego sposobu, aby po prostu wkleić mój (python) kod do lateksu bez utraty wszystkich wcięć (trochę ważne dla Pythona).

Czy ktoś ma jakieś jasne pomysły? Nie martwię się o podświetlanie składni; wszystko czego chcę to mój klawisz Tab z powrotem!

Odpowiedzi:


13

Moje ulubione środowisko dla tego wybitego . Używam go do wprowadzania całych plików źródłowych, takich jak:

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

Możesz go również użyć bez wprowadzania pliku, a co ważniejsze, zdefiniuj, ile wcięcia pożera po wklejeniu:

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

W ten sposób Twój LaTeX jest nadal ładnie wcięty, ale Twój pełny kod nie jest. Zapewnia to również wyróżnianie składni, o których wiem, że nie byłeś zainteresowany. Po prostu nie definiuj języka.



2

Pójdę z minted, jak Fideli zasugerował, ale dobrze jest mieć świadomość, w listingsopakowaniu , które jest czystą rozwiązanie Latex ot problemu.

mintedpochodzi od Pygments , źródłowego wyróżnienia napisanego w Pythonie. mintedcoimes z mostkiem lateks, na podstawie \write18i pakiet zawiera jeden do Pygments. W porównaniu do Pigmejów nie mam żadnych wad : być może te dwa zostaną połączone w pewnym momencie.texmentsminted


1

Aby użyć pakietu list, musisz dołączyć pakiet i załadować niezbędne języki w preambule:

\usepackage{listings}
\lstloadlanguages{Python}

Ustaw niektóre opcje w dokumencie:

\lstset{language=Python,tabsize=2}

... a następnie możesz podać fragmenty kodu w wierszu:

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

... lub przeczytaj je z pliku:

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

... lub wpisz kod: \lstinline!print ("Hello, World!")!


1

W przypadku LyX zobacz to (importuje dokument podrzędny w formacie „listingu”).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.