Добавление программного кода в LaTex / LyX


10

Может быть, я просто толстый, но я не могу найти никакого разумного способа просто вставить свой (python) код в латекс без потери всей информации о отступах (что очень важно для python).

У кого-нибудь есть яркие идеи? Меня не беспокоит подсветка синтаксиса; все, что я хочу, это моя клавиша Tab!

Ответы:


13

Моя любимая среда для этого чеканилась . Я использую его для ввода целых исходных файлов, таких как:

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

Вы также можете использовать его, не вводя файл, и, что более важно, определить, сколько отступов он сожрет после вставки:

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

Таким образом, ваш LaTeX все еще имеет хороший отступ, но ваш дословный код - нет. Это также обеспечивает подсветку синтаксиса, которая, как я знаю, вы упомянули, что вас не интересует. Просто не определяйте язык.


4

Вы захотите использовать дословную среду: http://web.mit.edu/vogt/www/latex/ltx-79.html

Если проблема возникает сразу после ее вставки ... вы используете IDE для создания документа? Попробуйте просто открыть файл в текстовом редакторе, таком как gedit или блокнот.


2

Я бы с mintedкак fideli предложил, но это хорошо , чтобы быть в курсе о listingsпакете , который является чистым Latex решение ВЗ проблемы.

mintedПроисходит от Pygments , источника подсветки, написанного на Python. mintedcoimes с мостом Latex, на основе \write18, и пакет обеспечивает один для Pygments. Нет недостатка в сравнении с известными мне Пегментами: возможно, в какой-то момент они будут объединены.texmentsminted


1

Чтобы использовать пакет списков, вы должны включить пакет и загрузить необходимые языки в преамбуле:

\usepackage{listings}
\lstloadlanguages{Python}

Установите некоторые параметры внутри документа:

\lstset{language=Python,tabsize=2}

... а затем вы можете дать фрагменты в строке:

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

... или читать их из файла:

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

... или напишите код в строке: \lstinline!print ("Hello, World!")!


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.