Adicionando código de programação ao LaTex / LyX


10

Talvez eu esteja apenas sendo grossa, mas não consigo encontrar uma maneira sensata de simplesmente colar meu código (python) no látex sem perder todas as informações de recuo (um pouco importante para o python).

Alguém tem alguma idéia brilhante? Não estou preocupado com o destaque da sintaxe; tudo o que eu quero é a minha tecla tab de volta!

Respostas:


13

Meu ambiente favorito para este cunhado . Eu o uso para inserir arquivos de origem inteiros, como:

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

Você também pode usá-lo sem inserir um arquivo e, mais importante, definir quanto recuo ele devora após colar:

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

Dessa forma, seu LaTeX ainda é bem recuado, mas seu código literal não é. Isso também fornece destaque de sintaxe, que eu sei que você mencionou que não estava interessado. Apenas não defina o idioma.


4

Você deseja usar o ambiente literal: http://web.mit.edu/vogt/www/latex/ltx-79.html

Se o problema for imediato ao colá-lo ... você está usando um IDE para criar o documento? Tente apenas abrir o arquivo em um editor de texto simples como o gedit ou o bloco de notas.


2

Eu iria com minted, como Fideli sugerido, mas é bom estar ciente do listingspacote , que é uma solução de látex puro ot o problema.

mintedé derivado de Pygments , um marcador de código-fonte escrito em Python. mintedcoime com uma ponte de látex, baseada em \write18, e o texmentspacote fornece uma para pigmentos. Não há nenhuma desvantagem em mintedrelação aos pigmentos que eu conheço: talvez os dois sejam mesclados em algum momento.


1

Para usar o pacote de listagens, você deverá incluir o pacote e carregar os idiomas necessários no preâmbulo:

\usepackage{listings}
\lstloadlanguages{Python}

Defina algumas opções dentro do documento:

\lstset{language=Python,tabsize=2}

... e você pode fornecer snippets inline:

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

... ou leia-os de um arquivo:

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

... ou escreva o código em linha: \lstinline!print ("Hello, World!")!


1

Para o LyX, consulte isso (importa um documento filho usando o formato "listagem").

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.