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

10

Talvez eu esteja apenas sendo grosso, mas não consigo encontrar nenhuma maneira sensata de simplesmente colar meu código (python) no latex sem perder todas as informações de recuo (meio importante para o python).

Alguém tem alguma ideia brilhante? Não estou preocupado com o destaque da sintaxe; tudo que eu quero é minha chave de tabulação de volta!

    
por Andrew Bolster 03.11.2010 / 01:43

5 respostas

13

Meu ambiente favorito para este cunhado . Eu uso isso para inserir arquivos fonte 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 devora colado:

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

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

    
por 03.11.2010 / 02:10
4

Você desejará usar o ambiente textual: link

Se o problema ocorrer imediatamente quando você colá-lo em ... você está usando um IDE para criar o documento? Tente abrir o arquivo em um editor de texto simples, como o gedit ou o bloco de notas.

    
por 03.11.2010 / 01:51
2

Eu vou com minted , como fideli sugeriu, mas é bom estar ciente de o listings package , que é uma solução pura de Latex do problema.

minted é derivado de Pygments , um marcador de origem escrito em Python. minted coimes com uma ponte de Latex, com base em \write18 e o pacote texments fornece um para Pygments. Não há desvantagem para minted comparado com Pygments que eu conheço: talvez os dois sejam mesclados em algum ponto.

    
por 05.11.2010 / 14:08
1

Para usar o pacote de listagens, você terá que 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 lê-los de um arquivo:

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

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

    
por 07.12.2010 / 23:48
1

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

    
por 26.07.2014 / 13:33