Agregar código de programación a LaTex / LyX

10

Tal vez solo estoy siendo grueso, pero no puedo encontrar ninguna manera sensata de simplemente pegar mi código (python) en látex sin perder toda la información de sangría (algo importante para python).

¿Alguien tiene alguna idea brillante? No me preocupa el resaltado de sintaxis; todo lo que quiero es mi tecla de tabulación de vuelta!

Andrew Bolster
fuente

Respuestas:

13

Mi ambiente favorito para este acuñado . Lo uso para ingresar archivos fuente completos como:

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

También puede usarlo sin ingresar un archivo y, lo que es más importante, definir cuánta sangría engulle una vez pegado:

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

De esa manera, su LaTeX todavía está bien sangrado, pero su código literal no lo está. Esto también proporciona resaltado de sintaxis, que sé que mencionó que no le interesaba. Simplemente no defina el idioma.

fideli
fuente
4

Deberá utilizar el entorno literal: http://web.mit.edu/vogt/www/latex/ltx-79.html

Si el problema es inmediato cuando lo pega ... ¿está usando un IDE para hacer el documento? Intente abrir el archivo en un editor de texto sin formato como gedit o bloc de notas.

oadams
fuente
2

Iría con minted, como sugirió fideli, pero es bueno conocer el listingspaquete , que es una solución pura de látex para el problema.

mintedse deriva de Pygments , un marcador fuente escrito en Python. mintedcoimes con un puente de látex, basado en \write18, y el texmentspaquete proporciona uno para Pygments. No hay ningún inconveniente en mintedcomparación con Pygments que conozco: tal vez los dos se fusionarán en algún momento.

Charles Stewart
fuente
1

Para usar el paquete de listados, deberá incluir el paquete y cargar los idiomas necesarios en el preámbulo:

\usepackage{listings}
\lstloadlanguages{Python}

Establezca algunas opciones dentro del documento:

\lstset{language=Python,tabsize=2}

... y luego puedes dar fragmentos en línea:

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

... o leerlos de un archivo:

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

... o escriba el código en línea: \lstinline!print ("Hello, World!")!

RolKau
fuente
1

Para LyX, vea esto (importa un documento hijo usando el formato "listado").

Bengala
fuente