有没有允许将源代码以文本形式保存在 LaTeX 中的软件包?我不想使用该listings
软件包,因为代码占用太多空间。复制/粘贴很麻烦,因为空格不会被保留。
答案1
我可以为您提供一些有关开始尝试的软件包和工具的提示,我过去尝试过几种工具:
我喜欢TeX 中的
verbatim
和verbatim*
环境。这是一种简单而直接的排版一小部分代码的方法。但是,它不能换行。我正在使用
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(中文、日文、韩文、越南文),例如 さようなら(即再见!在日语中,再见!我用英语写了一篇论文。有一次我展示了我制作 PF 明信片的过程。如果你正在处理
R
代码,现在有很多优秀的工具可以使用,knitr
(http://yihui.name/knitr/Sweave
) 和名为(的相当古老的工具http://www.stat.uni-muenchen.de/~leisch/Sweave/)。如果您正在处理
Sage
代码,请尝试以下SageTeX
风格,http://ctan.org/pkg/sagetex。它是由来自捷克共和国布尔诺的 Robert Mařík 编写的,我曾经和他见过面,他也是这个国家的开发者。:-)
我也使用该
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
虽然框不会跨页边界,但该软件包还提供其某些宏的“无框”版本,这些宏会跨页。但是,框式功能非常适合将逐字逐句地包含在图形、表格中,并将其移动到行上或居中。
在这个 MWE 中,为了清楚起见,我手动\fbox
在所有逐字框周围添加了附件,但它们不是逐字框的一部分。
\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
允许以如下方式格式化小代码块的包(注意:图像取自包文档):