Додавання коду програмування в LaTex / LyX


10

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

У кого-небудь були яскраві ідеї? Мене не турбує виділення синтаксису; все, що я хочу - це клавіша вкладки назад!

Відповіді:


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.