как вставить код программы в латех

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

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

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

5 ответов

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

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

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

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

minted происходит от Pygments, исходный маркер, написанный на Python. minted coimes с латексным мостом, на основе \write18 и texments пакета обеспечивает одно для Pygments. Нет никакой обратной стороны minted по сравнению с Pygments, что я знаю: может быть, два будет слились в какой-то момент.

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

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

. и тогда вы можете либо дать фрагменты рядный:

. или прочитайте их из файла:

. или пишите этот код: \lstinline!print («Hello, World!»)!

Источник

Оформление исходного кода в документах LaTeX

verbatim

Простейший способ — использовать окружение \begin. \end . Разумеется, подсветки синтаксиса при этом не будет. Для кода в строке используется «короткий verbatim», который удобно настроить с помощью пакета fancyvrb :

Управление размером шрифта в окружении verbatim (установлен \footnotesize ):

listings

Фрагмент кода внутри строки оформляется следующим образом

Проблема с UTF-8

При попытке вставить в код текст на кириллице (не в комментарий, а именно в код — текст должен был выводиться в графическом окне) было получено сообщение об ошибке вида:

При этом кодировка основного документа — UTF-8, что указано в преамбуле:

Сообщения об ошибках исчезнут, если указать в настройках \lstset использование не-ASCII символов:

Однако при этом остается проблема с русскоязычными комментариями, в которых слова оказываются склеены. Окончательно решает эту проблему следующий пакет.

minted

Вставим в документ код на C++ шрифтом размера \footnotesize :

и получим после трансляции

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

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

Теперь все будет работать.

Еще раз напомню, в версиях minted > 2.0 все работает «из коробки».

Оформление листингов в виде рисунков

Для этого поместим листинг, оформленный с помощью minted в окружение figure :

Картинка-листинг будет выровнена по левому краю страницы

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

Для выравнивания по центру нужно поставить в преамбуле документа:

Короткое имя и настройка макросов

Чтобы не писать всякий раз

или нечто подобное, можно ввести собственное название для макросов вставки кода на заданном языке с заданными настройками. Делается это при помощи команды \newminted :

Например, указав в преамбуле документа

мы сможем использовать для вставки кода новое окружение mycode

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

Код внутри строки текста

Чтобы вставить код прямо в строку текста, используем команду \mintinline

Например, создадим новое окружение для вставки Perl-кода:

Вот как это работает:

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

Какие языки поддерживает minted

Узнать, какие языки поддерживает minted можно, набрав в командной строке

На данный момент таких языков более 300.

Читайте также

Комментарии

Дмитрий Храмов
Компьютерное моделирование и все, что с ним связано: сбор данных, их анализ, разработка математических моделей, софт для моделирования, визуализации и оформления публикаций. Ну и за жизнь немного.

Источник

Осваиваем LaTeX за 30 минут

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

Что такое LaTeX?

LaTEX (произносится как «лэйтех» или «латех») представляет собой инструмент для создания профессиональных документов. В его основе лежит парадигма редактирования WYSIWYM (что вижу, то и подразумеваю), то есть от пользователя требуется сосредоточиться только на содержимом документа, оставив его форматирование программе. Вместо ручного распределения текста по странице, как это делается в Microsoft Word или LibreOffice Writer, можно просто его вводить, позволив LaTeX заняться остальным.

Зачем нужен LaTeX?

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

Благодаря доступности большого числа открытых библиотек (об этом чуть позже) возможности LaTEX становятся практически безграничны. Эти библиотеки расширяют возможности пользователей еще больше, позволяя добавлять сноски, рисовать схемы и пр.

Одна из наиболее веских причин, по которой многие используют LaTeX, заключается в отделении содержания документа от его стиля. Это означает, что после написания содержимого, можно с легкостью изменять его внешний вид. Аналогичным образом, можно создать один стиль документа и использовать его для стандартизации внешнего вида других.

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

Пишем первый документ

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

Здесь мы видим, что LaTeX уже позаботился о первом элементе форматирования, сделав отступ в начальной строке абзаца. Теперь более подробно рассмотрим, за что отвечает каждая часть кода.

После этого мы пишем содержание документа, заключенное в теги \begin и \end , представляющие его тело. Можете начать писать здесь текст и при желании вносить в него изменения.

Чтобы увидеть результат этих изменений в PDF, документ нужно скомпилировать. В Overleaf для этого нужно просто нажать Recompile. (Также можете настроить проект на автоматическую перекомпиляцию в процессе редактирования файлов, нажав на небольшую стрелку рядом с кнопкой Recompile и установив Auto Compile как On).

При использовании специального редактора LaTeX вроде TeXmaker или TeXworks нужно просто нажать кнопку Recompile. Если не знаете, где она находится, обратитесь к документации.

Теперь, когда вы разобрались, как добавлять в документ содержимое, следующим шагом будет его именование. Для этого необходимо вкратце разобрать преамбулу.

Преамбула документа

А вот подробное разъяснение каждой строки:

Эта команда задает кодировку документа. Ее можно опустить либо изменить на другой вариант, но рекомендуется использовать именно utf-8. Если вам не требуется конкретно другая кодировка, либо вы просто не уверены, то добавьте эту строку во вступление.

Добавление заголовка, автора и даты

Для добавления в документ заголовка, автора и даты необходимо внести во вступление три строки (только не в основное тело документа):

Здесь размещается имя автора. При желании можно также добавить в фигурные скобки следующую команду:

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

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

Добавление комментариев

Как и в случае с любым кодом, зачастую будет нелишним добавлять комментарии. Комментарии – это включаемые в документ текстовые элементы, которые в итоге не отображаются и никак не него не влияют. Они помогают организовывать работу, делать пометки или закомментировать (отключать) строки/разделы при отладке. Чтобы создать комментарий в LaTeX, просто наберите символ % в начале строки, как показано ниже:

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

Жирный, курсив и подчеркивание

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

А вот еще одна очень простая команда: \emph <. >. Выполняемые ей для аргумента действия определяются контекстом – внутри обычного текста его выделенная часть переводится в курсив, а при использовании команды в курсивном тексте происходит обратное.

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

Добавление изображений

В Overleaf для добавления изображений их сначала нужно будет загрузить.

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

Команда \graphicspath < > сообщает LaTeX, что изображения находятся в каталоге images в текущей директории.

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

Подписи, метки и ссылки

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

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

В примере выше показаны три важные команды:

Примечание: если вы используете подписи и ссылки на собственном компьютере, то вам потребуется скомпилировать документ дважды, чтобы они сработали. Overleaf делает это автоматически.

Создание списков

Списки в LaTeX создаются очень просто. Делается это с помощью различных окружений списков. Окружения – это разделы, которые требуется представить отличным от остальной части документа образом. Начинаются они с \begin <. >, а завершаются на \end <. >.

Существует два основных типа списков: упорядоченные и неупорядоченные. Каждый из них реализуется в собственном окружении.

Неупорядоченные списки

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

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

Упорядоченные списки

Для упорядоченных списков используется тот же синтаксис, но в другом окружении. В данном случае этим окружением выступает enumerate :

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

Добавление математических выражений

Одно из главных удобств LaTeX состоит в простоте использования математических выражений. Этот инструмент предоставляет два режима их написания: режим inline (встраивание) и режим display (отображение). Первый используется для написания формул, являющихся частью текста. Второй позволяет создавать выражения, не входящие в состав текста или абзаца, а размещаемые на отдельных строках. Вот пример режима встраивания:

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

Режим отображения предлагает два варианта: без нумерации и с нумерацией.

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

Важно: окружение equation* предоставляется в виде стороннего пакета. Подробнее об этом рекомендую почитать статью по amsmath.

Для использования многих команд при работе с математикой необходим пакет amsmath, поэтому не забудьте его добавить. Ниже показан пример некоторых его базовых команд:

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

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

Базовое форматирование

Теперь разберем написание аннотаций, а также форматирование документов LaTeX в разных главах, разделах и абзацах.

Аннотации

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

Абзацы и перевод строки

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

Когда при написании документа вам требуется начать новый абзац, нужно дважды нажать «Ввод», вставив таким образом двойную пустую строку. Имейте ввиду, что отступ абзацев LaTeX делает автоматически.

Чтобы создать новую строку без создания очередного абзаца нужно вставить точку разрыва строки, для чего используется \\ (двойной обратный слэш, как в примере) или команда \newline.
При этом не следует использовать несколько \\ или \newline для «имитации» абзацев с увеличенными интервалами между ними, так как это приведет к конфликту с внутренними алгоритмами LaTeX. Для подобного эффекта рекомендуется использовать двойные пустые строки, после чего добавлять во вступление \usepackage .

Дополнительную информацию по теме можно найти в статье Paragraphs and new lines.

Главы и разделы

Команды для организации документа варьируются в зависимости от его типа. Простейшей формой организации выступает деление на разделы, доступное во всех форматах.

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

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

Более подробный разбор структуры документа описан в статье Sections and Chapters.

Создание таблиц

Простые таблицы

Вот простейший пример создания таблицы:

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

Добавление границ

Окружение tabular достаточно гибкое и позволяет размещать разделяющие строки между каждым столбцом.

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

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

Подписи, метки и ссылки

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

Примечание: если вы используете подписи и ссылки на своем компьютере, то для работоспособности ссылок нужно будет скомпилировать документ дважды. Overleaf делает это автоматически.

Добавление содержания

Процесс создания содержания очень прост и реализуется командой \tableofcontents :

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

Скачивание готового документа

Завершенный документ в формате PDF можно скачать через расположенное слева меню, кликнув PDF.

Есть и более быстрый способ через нажатие кнопки Download PDF в окне просмотра PDF, как показано ниже:

Источник

Записки дебианщика

В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве Debian GNU/Linux.

Как оформить исходный код программ в LaTeX без адских страданий

Иногда в документ LaTeX нужно вставить кусок программного кода или псевдокод, поясняющий алгоритм. В зависимости от языка программирования и целей, подсветка кода в LaTeX достигается подключаемыми пакетами расширений разной степени кривизны и безумия документации.

cblas_dgemv(CblasRowMajor, CblasNoTrans, 3, 3, 1.0, m, 3, x, 1, 0.0, y, 1);

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

Просто, дёшево, сердито и безболезненно.

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

А вот для него код:

Как оформить псевдокод в LaTeX?
Часто приводить дословно исходный код программы не требуется, но нужно пояснить общий ход алгоритма псевдокодом. Для оформления псевдокодов и алгоритмов наиболее вменяемый пакет называется algorithm2e доступный отсюда.

Скачиваем стилевой файл algorithm2e.sty и прописываем его в преамбуле документа:

Вот как выглядит алгоритм, оформленный пакетом algorithm2e::

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

\begin < algorithm >[H]
\SetAlgoLined %% Это соединяет линиями логические части
%% алгоритма типа if-then-else

\KwData < experiment.data>%% здесь можно указать исходные параметры

\KwResult < output, xoptimal >%% результат работы программы

// Step lenght computation: %% это комментарий, который будет виден.

// Compute the termination constant %% это комментарий, который будет виден.

И вот что мы увидим в документе:

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

Для примера вставим исходный код программы на С в документ LaTeX с помощью listings.

Сначала правим преамбулу документа:

\usepackage %% это для отображения цвета в коде
\usepackage %% собственно, это и есть пакет listings

\usepackage

\DeclareCaptionFont < \color > %% это сделает текст заголовка белым
%% код ниже нарисует серую рамочку вокруг заголовка кода.
\DeclareCaptionFormat < \colorbox < \parbox < \textwidth ><#1#2#3>>>
\captionsetup [lstlisting]

Теперь уже внутри документа настраиваем вид оформление исходника программы на С. Здесь я привёл основные параметры с пояснениями, что они делают:

Вставляем приведённые выше заклинания в тело документа и после этого куска кода вставляем, собственно, оформление исходника:

\begin < lstlisting >[label=some-code,caption=Some Code]
int main(void) // main routine
<
int i, j; // Initialisation of counters

// The code below prints the 3×3 matrix
for (i=0; i
for (j=0; j
putchar(‘\n’);
>

cblas_dgemv(CblasRowMajor, CblasNoTrans,
3, 3, 1.0, m, 3, x, 1, 0.0, y, 1);

Это всё должно скомпилироваться и выдать следующий результат:

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

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

Зато listings работает с олдскульной и ортодоксальной koi8-r. Для это вставляем в преамбулу:

\usepackage [T2A]
\usepackage [koi8-r] %включаем свою кодировку: koi8-r или utf8 в UNIX, cp1251 в Windows
\renewcommand <\lstlistingname>

и далее меняем оформление исходника на это:

\begin < lstlisting >[label=some-code,caption= ]
int main(void) // главная программа
<
int i, j; // инициализация счётчиков

// Сей код множит матрицу величиною 3×3
for (i=0; i
for (j=0; j
putchar(‘\n’);
>

// Вызов басурманской библиотеки BLAS
cblas_dgemv(CblasRowMajor, CblasNoTrans,
3, 3, 1.0, m, 3, x, 1, 0.0, y, 1);

// Подаём челобитную на экран
for (i=0; i

В итоге мы получим кириллизованный фрагмент кода:

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

Нашедшие рабочий рецепт с listings и комментариями на русском в utf8 приглашаются им поделиться в комментариях.

Итоги дискуссии по оформлению программного кода с русскими комментариями в listings: решение в использовании команд escapechar= или конвертацией документа в koi8/cp1251. Больше подробностей по этим ссылкам. Спасибо Роману Химову и Alexanius за ценные замечения в комментариях.

Тем не менее, listings, хотя и не идеален, но представляет собой наиболее гибкое решение.

Альтернативы
Есть и другие способы добиться от LaTeX большой и чистой любви раскраски и подсветки исходного кода.

То есть раскрасить исходный код из файла и выдать в теховский файл code.tex для вставки в документ. Выхлоп source-highlight выглядит вот так:

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

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

В целом, это костыль, конечно, но он, скажем так, работает.

32 комментариев: |высказаться!| RSS-лента дискуссии.|

В описании mcode, не рисунке красуется заглавие «MATAB Code», так и задумано?
Джигиты используют listings, который не только не поддерживает раскраску некоторых современных языков (виват, JavaScript!), но и с кириллицей почти никак. Тем не менее, приведу свои параметры:
inputencoding=utf8, extendedchars=\true, keepspaces=true

Теперь шнапс с тебя, или что вы там пьёте в иноземье 😉

Есть такой хороший пакет alltt, который дает окружение alltt, которое лично я для кода использую вместо verbatim, поскольку в нем можно выделять цветом, жирным и т.д., тогда как переносы строк и пробелы вполне «вербатимные». Лично мне это удобнее, чем то, что автоматом делает listings. И с русским языком никаких проблем.

Для решения проблемы listing с пробелами перенес код в отдельные файлы и преобразовал их в cp1251. При этом нужно в lstset указать кодировку:
inputencoding=cp1251
а код добавлять командой:
\lstinputlisting

@iv_vl комментирует…
В описании mcode, не рисунке красуется заглавие “MATAB Code”, так и задумано?

Джигиты используют listings
Да это-то понятно: джигиты они и на С напишут раскраску. Документация у пакета, скажем мягко, писана давно и неправда.

не поддерживает раскраску некоторых современных языков (виват, JavaScript!)
Ху из ит, Дринкинс?! 🙂 Да разве это язык, чтоб его ещё поддерживать? Там вон маркдаун-то не все поддерживают (Kate не знает), а тут какой-то яваскрипт….

Только тормозит minted, ибо дергает внешнюю прогу на питоне.

внешнюю прогу на питоне.

Теперь шнапс с тебя, или что вы там пьёте в иноземье 😉
А за что шнапс-то? Ты давай выкладывай на своём мегапортале про minted, и как ты всё это делал. С примерами. А то ишь, заскочил, посветил издалека костылями на питоне и уж ему тут шнапс наливай. Реквестирую руководство к действию по Pygment и minted для солдат и беременных женщин 🙂

@Иван Шихалев комментирует…
Есть такой хороший пакет alltt, который дает окружение alltt, которое лично я для кода использую вместо verbatim
О, это ценное замечание. Надо бы его в пост воткнуть.

Лично мне это удобнее, чем то, что автоматом делает listings.
Проблема listings в том, что это большая помойка: оно много чего может, но мало кто знает, как от него этого добиться. А кто знает, тот молчит и посылает в маны. А там посылают ещё дальше.

Если серьёзнее, то да: с юникодом есть проблемы, часто приходится втыкать кои8, чтобы оно заработало. Хотя мне чаще всего приходится писать на latin1, а там всё работает.

P.S> Норма по троллингу выполнена, к конструктивным дебатам готов 🙂

About listings and Russian:
\usepackage\lstsetbasicstyle=\scriptsize,breaklines=true,inputencoding=utf8/cp1251>
\lstinputlisting

@virens комментирует.
> (виват, JavaScript!)
Ху из ит, Дринкинс?! 🙂 Да разве это язык, чтоб его ещё поддерживать?

Табличка «сарказм» где? Или дебианщики настолько суровы, что отключают JavaScript при входе в Gmail? В listings и Python нету, удачи с ним!

Не дОлжно требовать сторонних костылей (и на пистоне!) для такой простой вещи.
Ты уже нашёл способ подружить TeX’овские варианты с кириллицей и утаиваешь эту волшебную таблетку от нас? Вывод listings для более-менее объемного текста на русском заставлял меня ругаться очень нехорошими словами. Ты книгу Кнута «Всё про TeX» читал? А я читал, и считаю, что на нём писать могут только ну очень большие энтузиасты.

> на питоне.
Ну ты понял, да? 🙂

Один раз прогнать так, чтобы научник прибалдел, будет достаточно.

> alltt, которое лично я для кода использую вместо verbatim
О, это ценное замечание. Надо бы его в пост воткнуть.

Михаил, только распиши, что там к чему, а то по листку документации я ничего не понял.

А кто знает, тот молчит и посылает в маны.
Ты не поверишь. но в манах написано всё, что он умеет.

@Иван Шихалев комментирует.

@Yaroslav Klyuyev комментирует.
About listings and Russian

Hmm. Yaroslav, the problem is that \usepackage just converts the code from UTF8 to other encoding. This trick does not solve the problem, actually, because the code (and comments) might contain special symbols (and I’m not sure that they will be converted to, say cp1251 properly).

Furthermore, in my case it doesn’t work at all. Apparently, I’m not the only one, and the solution there is far from obvious.

Anyway, thanks for sharing.

BTW, your Google+ page consumes enormous bandwidth for some reason.

@iv_vl комментирует.
Табличка «сарказм» где?
Еда! 🙂 Извини, я не мог удержаться.

Вывод listings для более-менее объемного текста на русском
В общем, да это проблема. Я стараюсь не писать код с кириллическими комментариями. Ярослав выше присоветовал listingsutf8, но работает оно, скажем так, не очень. У меня, например, оно с комментариями на русском в питоновском скрипте не заработало.

И да, Йоханес Браамс (автор alltt) там жжот глаголом, аж на целых две страницы:

This package defines the alltt environment, which is like the verbatim environment except that \, <, and >have their usual meanings.

their usual meanings.

Ну мы поняли всё. Как и название пакета, которое хорошо вписывается в опенсорц-стиль, вместе с cdparanoia, brainfuck, qtpfsgui, pornview и gimp.

Ты не поверишь. но в манах написано всё, что он умеет.
Дык, отец, в том и проблема: там всё написано, но этого так много, и оно свалено в такую кучу, что разобраться в этом получается не сразу.

стиль подачи поста оценил 🙂 автору респект

слава богу, мне пока с LaTeX-ом не приходилось сталкиваться…)

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

Только вот, наверное, стоит подправить
Да, поправил. Спасибо.

Плюс к тому плюшки от UTF-8 в связке с minted, плюс которого
. знаешь только ты 🙂

слава богу, мне пока с LaTeX-ом не приходилось сталкиваться
Он не так страшен, как ты думаешь. В основном беда из-за расширений, которые налабали нерадивые скубенты и прочая школота (beamerposter, listings, moderncv. ). А так оно rock solid. Вон я даже всю систему GTD в нём реализовал.

Пост ещё немного поправлен, убраны очепятки и немного лирики.

Касательно lstlistings. Мне удалось получить примерно такой результат с utf8. Т.е. единственной проблемой осталась кривая подсветка синтаксиса, но если всё делать одним цветом, то сойдёт. Если в кратце, то добился этого так:

\lstset breaklines,
columns=fullflexible,
flexiblecolumns,
numbers=left,
numberstyle=<\footnotesize>,
extendedchars=\true
>
\lstdefinelanguage <
language=C,
ndkeywordstyle=\color\bfseries,
identifierstyle=\color,
morecomment=[n]<*/>,
commentstyle=\color\ttfamily,
stringstyle=\color\ttfamily,
morestring=[b]»,
showstringspaces=false,
morecomment=[l][\color],
keepspaces=true,
escapechar=\%,
texcl=true
>

Вообще через escapechar можно отдавать куски на обработку латеху
например выделить строки курсивом и окружить кавычками:
\lstset,escapeend=<\it ''>>

Latex, кириллица и listings. Кажется, было здесь:
http://roman.khimov.ru/2011/05/19/latex-listings-cyrillic/

[OpenID чего-то не захотел работать для «подписи»]

Пытался делать таким способом, не получилось. Мои потуги есть здесь если что.

@alexanius: Если проблема именно в цвете, то в моём специфичном случае он не был нужен, поэтому я проблемы с цветом не увидел. Касаемо однобайтности, в стандартном латехе, ЕМНИП, всё равно шрифты выходят однобайтные, поэтому работает при использовании utf8 на входе и шрифтах T2A. Это уже в XeTeX полноценный ввод-вывод юникодный.

@Анонимный комментирует.
Вообще через escapechar можно отдавать куски
Анонимус, это вообще-то костыли, к которым хотелось бы не прибегать вообще. Тем не менее, спасибо, что поделился.

@Роман комментирует.
Latex, кириллица и listings.
Странно, я этот пост проморгал, хотя на твой фид подписан.

[OpenID чего-то не захотел работать для «подписи»]
Обычно он работает.

Итоги дискуссии по оформлению программного кода с русскими комментариями в listings: решение в использовании команд escapechar= или конвертацией документа в koi8/cp1251.

И еще, как ты подписи от руки делал на примере с alltt? Моя хотеть уметь так же.

Решение чего? С моими параметрами (см. выше) listings испытывает проблемы с многострочными комментариями
Решение проблемы вставки кириллицы в комментариях кода. Частичное, хотя бы.

Хотелось бы экшена
В посте же есть. Потом, я ж не Сильвестр Сталоне чтоб тут базукой размахивать и экшн доставлять 🙂

По теме alltt: у автора оного творения не хватило мозгов проверить это даже на Си, где оно не работает вообще. Можно было бы придумать что-то пооригинальнее, и чтобы оно код не жевало.

Магия LaTeX: замени putchar(‘\\n’) на putchar(‘\textbackslash<>n’).
Я как бы в курсе, но вот это и есть жуткий костыль. Не дОлжно править код, оно должно быть as is.

И еще, как ты подписи от руки делал на примере с alltt? Моя хотеть уметь так же.
Патентованный метод, 500 баксов роялти в кассу 🙂

На самом деле это сделано в Gimp с помощью стилуса моего ноутбука с тачскрином. Латеховский выхлоп конвертим в PS, открываем Гимп и рисуем. Ручная работа! %-)

У вас какие-то специфичные проблемы дебианщиков, чини локаль. УМВР, локаль UTF-8, inputencoding указана та же.

по крайней мере КДЕ4, которое в Сквизи, тупо не работает. [еда]
Увы, нет еды. Gentoo и KDE 4.9.3 просто работают.

МПо теме alltt: у автора оного творения не хватило мозгов проверить это даже на Си, где оно не работает вообще.
С какой стати проверять на Си? Это ведь не пакет для подсветки синтаксиса, не listings, а простой verbatim с плюшками. Поведение пакета alltt предсказуемо, LaTeX код внутри интерпретируется как положено. Всё, большего не надо.

KDE 4.9.3
.
просто работают
Мда. Надо было дожить до беты ПЯТОЙ версии Qt, чтобы KDE ПРОСТО заработало (впрочем это не может не радовать)!
А по теме, спасибо автору, самому намедни пришлось поколупаться со вставкой кода в LaTeX, моим решением данной проблемы оказался тупой и незатейливый PrintScreen (да-да, начинаем дружно показывать пальцем и ржать в голос), в оправдание таких топорных методов могу сказать лишь, что кусочек кода был небольшим, кусочек времени еще меньше, а почти все остальное было уже готово.

@iv_vl комментирует.
Это ведь не пакет для подсветки синтаксиса, не listings, а простой verbatim с плюшками.
ОК, согласен.

[И да, ссылочку на свой мегапортал в readme на гитхабе я бы очень попросил поставить.]

Кстати, я добавил ещё немножко ссылок в конец поста.

@virens комментирует.
iv_vl, реквестирую описание minted в твоём неподражаемом исполнении («для настоящих мужЫков»)
Хотелось бы научить minted понимать явное указание кодировки, поскольку по умолчанию Pygments использует latin1, и кириллические комментарии в пролете. Уже появилать возможность указать кодировку в Pygments, но в minted ее не включили. Призываются в комментарии специалисты по TeX’y. Я читал «Все про TeX», поэтому, возможно, управлюсь сам (но времени нужно больше), вот тогда будет описание «для настоящих мужЫков».

Воссоздал minted на GitHub, посмотрим, что выйдет.

Расскажите, как выделять цветом в пакете altt? И вопрос, есть ли возможность какая-нибудь подружить mcode с русским языком?

Ссылки для algorithm2e пакета ведут на 404.

@Рома комментирует.
Расскажите, как выделять цветом в пакете altt?

И вопрос, есть ли возможность какая-нибудь подружить mcode с русским языком?

I write all my documents in English, therefore, I don’t really care.

@Ruslan Kiianchuk комментирует.
Ссылки для algorithm2e пакета ведут на 404.

Там оно работает. В других версиях не проверял.

Оказалось, что связка «minted + UTF-8 + русские буквы» делается не совсем очевидно. Для этого нужно добавить немного магии в преамбулу.

Очень интересная статья, но мне бы что-нибудь попроще, я с латехом недавно знаком 🙂 Верстаю книжку на околоматематическую тему, и в тексте часто встречаются примеры разных задачек. Хочется их оформить красиво, чтобы в рамочке и в уголке подпись «пример № такой-то», и ещё чтобы всё это не было ограничено одной страницей. Не подскажете, как реализовать такое попроще?

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *