Добавление программного кода в LaTex / LyX
Может быть, я просто толстый, но я не могу найти какой-либо разумный способ просто вставить свой (python) код в латекс, не теряя всю информацию о отступах (что очень важно для python).
У кого-нибудь есть яркие идеи? Меня не беспокоит подсветка синтаксиса; Все, что я хочу, это моя клавиша Tab!
5 ответов
Моя любимая среда для этого чеканилась. Я использую его для ввода целых исходных файлов, таких как:
\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 по-прежнему имеет хороший отступ, но ваш дословный код - нет. Это также обеспечивает подсветку синтаксиса, которая, как я знаю, вы упомянули, что вас не интересует. Просто не определяйте язык.
Вы захотите использовать дословную среду: http://web.mit.edu/vogt/www/latex/ltx-79.html
Если проблема возникает сразу после ее вставки... вы используете IDE для создания документа? Попробуйте просто открыть файл в текстовом редакторе, таком как gedit или блокнот.
Я бы пошел с minted
Как предположил Фидели, но хорошо знать listings
пакет, который является чистым латексным решением проблемы.
minted
Происходит от Pygments, источника подсветки, написанного на Python. minted
коим с латексным мостом, основанным на \write18
и texments
Пакет предоставляет один для Pygments. Там нет недостатка в minted
по сравнению с известными мне фрагментами: возможно, в какой-то момент они будут объединены.
Для LyX смотрите это (импортирует дочерний документ, используя формат "перечисления").
Чтобы использовать пакет списков, вы должны включить пакет и загрузить необходимые языки в преамбуле:
\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!")!