
Есть ли пакет, который позволяет исходный код в LaTeX как текст? Я бы предпочел не использовать пакет, listings
потому что код занимает слишком много места. Копировать/вставить утомительно, потому что пробелы не сохраняются.
решение1
Я могу дать вам пару советов по пакетам и инструментам, с которыми можно начать экспериментировать. В прошлом я перепробовал несколько инструментов:
Мне нравятся среды
verbatim
иverbatim*
в TeX. Это простой и понятный способ быстро набрать небольшую часть кода. Однако он не может переносить строки.Я пользовался этим
fancyvrb
пакетом некоторое время назад,http://ctan.org/pkg/fancyvrb. Это был первый пакет, где я заметил, что перекрестные ссылки на номера строк исходного кода возможны (вообще), см. страницы 14 и 15 документации.Я пользуюсь этим
listings
пакетом довольно часто,http://ctan.org/pkg/listings. Это довольно сложный пакет, но он удовлетворяет мои потребности, особенно его опция форматирования внешнего файла (команда\lstinputlisting
). Он также может переносить строки и добавлять открывающий и закрывающий символы к таким строкам. Я помню, что создал свой собственный фильтр для языка VBA (Visual Basic for Applications), было весело попробовать это. Есть новый пакет для работы с символами в кодировке UTF-8, пожалуйста, ознакомьтесь с пакетомlistingsutf8
,http://ctan.org/pkg/listingsutf8. Я использовал управляющие последовательностиlistings
для решения этой конкретной проблемы. Я набирал CJKV (китайский, японский, корейский, вьетнамский) в своем исходном коде, например さようなら (этоСаёнара!на японском этоДо свидания!(на английском языке). Однажды я представлял подготовку своих открыток для ПФ.Если вы имеете дело с
R
кодом, то в наши дни есть прекрасные инструменты для работы с ним,knitr
(http://yihui.name/knitr/) и довольно старый инструмент под названиемSweave
(http://www.stat.uni-muenchen.de/~leisch/Sweave/).Если вы имеете дело с
Sage
кодом, попробуйте стильSageTeX
,http://ctan.org/pkg/sagetex. Программированием занимается Роберт Маржик из Брно, Чешская Республика, человек/разработчик, с которым я однажды встречался лично.:-)
Я тоже пользуюсь
Highlight
программой (http://www.andre-simon.de/). Есть возможность смешивать несколько языков в одном исходном коде для подсветки (LaTeX+Lua, HTML+CSS и т. д.). Это называется форматированием и распознаванием вложенных языков в файле, я просил об этой функции, когда родился LuaTeX, я просто горжусь, что сделал это. Обе программы (эта и Pygments) предоставляют формат LaTeX в качестве опции экспорта для других языков. Стиль можно извлечь в отдельный файл из остального документа.Стоит упомянуть очень мощный инструмент под названием
Pygments
(http://pygments.org/). Я использую его напрямую из командной строки (или как библиотеку из Python), плюс в мире TeX есть (как минимум) два пакета, упрощающих преобразование:TeXments
(http://ctan.org/pkg/texments) иMinted
(http://ctan.org/pkg/minted). Говоря о Python, есть также пакет с именемPythonTeX
, см.http://ctan.org/pkg/pythontex. Попробуйте!Недавно я узнал об этом
pandoc
инструменте,http://johnmacfarlane.net/pandoc/. Это скорее конвертер формата в формат, но стоит попробовать. В дополнение к самостоятельным исполняемым файлам для всех основных операционных систем есть онлайн-версия,http://johnmacfarlane.net/pandoc/try/. Формат LaTeX является опцией как на входе, так и на выходе конвертера. Похоже, этот инструмент (из) будущего!
Удачи в наборе исходных кодов!
решение2
Вот идиома, которую я использую, чтобы предоставить своим студентам (изучающим TeX) исходный код для домашнего задания, чтобы они могли изучить и отредактировать его, когда будут записывать свои математические работы.
\documentclass{article}
\usepackage{verbatim}
\begin{document}
Homework exercises here \ldots
\newpage
Here is the \LaTeX{} source for this document. You can cut it from the
pdf and use it to start your answers. I used the \verb!\jobname! macro
for the source file name, so you can call your file by any name you like.
\verbatiminput{\jobname}
\end{document}
решение3
Это используется verbatimbox
для помещения его в блок уменьшенного размера. Дальнейшее уменьшение размера блока возможно с помощью \scalebox
. В то время как блок не будет разрываться через границу страницы, пакет также предлагает версии "nobox" некоторых своих макросов, которые будут разрываться через страницу. Тем не менее, функция boxed хороша для включения дословно в рисунки, таблицы и перемещения его прямо по строке или центрирования.
В этом MWE я вручную добавил \fbox
вложения вокруг всех полей verbatim для ясности, но они не являются частью поля verbatim-box.
\documentclass{article}
\usepackage{verbatimbox}
\usepackage{graphicx}
\parskip 1ex
\parindent 0in
\begin{document}
With verbatimbox, you can tell the macro to make the code ``footnotesize.''\par
\begin{verbbox}[\footnotesize]
Here is my input code text
Line two of my $%& code text
Done now.
\end{verbbox}
\fbox{\theverbbox}\par
If it is from a file, I can do that, too, this time \verb|\scriptsize|:\par
\verbfilebox[\scriptsize]{junk.tex}
\fbox{\theverbbox}\par
Alternately, you could shrink it further with a \verb|\scalebox|:\par
\fbox{\scalebox{.5}{\theverbbox}}\par
If you have need to break across pages, the package offers ``nobox'' versions
of some of its macros.
\end{document}
Также естьnumberedblock
пакет, позволяющий форматировать небольшие блоки кода следующим образом (примечание: изображение взято из документации пакета):
решение4
Проблема с verbatim в том, что он не разбивает длинные строки кода, поэтому я использую spverbatim
вместо него пакет
\documentclass{article}
\usepackage{spverbatim}
\begin{document}
\begin{spverbatim}
code
code with a very long line that does not fit on the page and so needs to be broken or wrapped
code
\end{spverbatim}
\end{document}