Aggiunta di codice di programmazione in LaTex / LyX


10

Forse sto solo diventando spessa, ma non riesco a trovare un modo ragionevole per incollare semplicemente il mio codice (python) in lattice senza perdere tutte le informazioni di rientro (un po 'importante per Python).

Qualcuno ha qualche idea brillante? Non sono preoccupato per l'evidenziazione della sintassi; tutto ciò che voglio è il mio tasto tab indietro!

Risposte:


13

Il mio ambiente preferito per questo coniato . Lo uso per inserire interi file sorgente come:

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

Puoi anche usarlo senza inserire un file e, soprattutto, definire la quantità di rientro che divora una volta incollato:

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

In questo modo il tuo LaTeX è ancora ben rientrato, ma il tuo codice non lo è. Questo fornisce anche l'evidenziazione della sintassi, che so che hai menzionato non ti interessava. Basta non definire la lingua.


4

Ti consigliamo di utilizzare l'ambiente testuale: http://web.mit.edu/vogt/www/latex/ltx-79.html

Se il problema si presenta immediatamente quando lo incolli ... stai usando un IDE per creare il documento? Prova ad aprire il file in un editor di testo semplice come gedit o Blocco note.


2

Mi piacerebbe andare con minted, come Fideli suggerito, ma è bene essere consapevoli del del listingspacchetto , che è una soluzione lattice pura ot il problema.

mintedderiva da Pygments , un evidenziatore sorgente scritto in Python. mintedè compatibile con un bridge Latex, basato su \write18, e il texmentspacchetto ne fornisce uno per Pygments. Non c'è alcun mintedaspetto negativo rispetto a Pygments che conosco: forse i due saranno uniti ad un certo punto.


1

Per utilizzare il pacchetto di elenchi, devi includere il pacchetto e caricare le lingue necessarie nel preambolo:

\usepackage{listings}
\lstloadlanguages{Python}

Imposta alcune opzioni all'interno del documento:

\lstset{language=Python,tabsize=2}

... e poi puoi dare in linea frammenti:

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

... o leggili da un file:

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

... o scrivi il codice in linea: \lstinline!print ("Hello, World!")!


1

Per LyX, vedere questo (importa un documento figlio utilizzando il formato "elenco").

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.