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!

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.



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.


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!")!


1

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.