用于格式化计算机代码的宏?

用于格式化计算机代码的宏?

我需要创建包含大量 R 代码的文档,这些代码不是通过 knitr 发送到 R。理想情况下,它应该像 Stackexchange 上的代码格式一样工作。它应该在 ttfamily 中设置,并且不会跨行。我不确定灰色背景是否必要。我宁愿不使用\begin{environment}and \end{environment},因为当代码只有几个词时这很麻烦。

最棘手的部分似乎是某些特殊字符应该失去其特殊性。具体来说,R 代码中常用的“$”和“_”不应该被转义。

类似问题有解决方案这里,但这采用了 \begin{}\end{} 方法,因此在这里不起作用。

类似的东西\code{my code}会更好。我有一个宏的开头:

\newcommand{\nbcode}[1]{\mbox{\texttt{#1}}}

如果这个问题的解决方案是一个我从未听说过的包那就太好了。

答案1

LaTeX 提供的最简单的方法是\verb宏和verbatim环境。例如,您可以编写\verb|print($hello)|并获取print($hello)。请注意, 的参数不是由常规括号分隔,而是\verb由您紧跟在其后的字符分隔。这样,您只需选择与内容不冲突的分隔符即可避免转义分隔符。

您还应该看看这类东西的标准包:

  • verbatim
  • fancyvrb
  • listings
  • minted

这些提供了许多不同的方式来定制代码的外观,通过提供框,颜色,突出显示等。

相关内容