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!

Andrew Bolster
źródło

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.

fideli
źródło
4

Będziesz chciał użyć pełnego środowiska: http://web.mit.edu/vogt/www/latex/ltx-79.html

Jeśli problem pojawia się natychmiast po wklejeniu go ... czy używasz IDE do utworzenia dokumentu? Spróbuj otworzyć plik w zwykłym edytorze tekstowym, takim jak gedit lub notatnik.

oadams
źródło
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

Charles Stewart
źródło
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!")!

RolKau
źródło
1

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

Brylant
źródło