我想在 latex 文档中创建 R 代码,当复制到 R 环境中时,该代码可直接执行。我使用以下 MWE,但 R无法正确解释<-
和*
。有没有办法告诉 LaTeX 在这种情况下使用不同的符号,然后可以直接在 R 中使用。这只是一个简短的示例,让学生可以选择尝试 R,所以我不能指望他们对 R 有任何了解,因此它应该很容易执行。
\documentclass[a4paper,12pt,headsepline,automark]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{gensymb}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{listings}
\usepackage{hyperref}
\begin{document}
%\maketitle
\begin{lstlisting}[language=R,inputencoding={utf8},extendedchars=false, escapeinside={(*}{*)}]
A <- matrix(c(0.15, 0.01, 0,
0.14, 0.36, 0.07,
0.15, 0.13, 0.3), ncol = 3, byrow = TRUE)
I = diag(nrow = nrow(A))
I%*%A
I %(*$\ast$*)% A
\end{lstlisting}
\end{document}
答案1
至少对我来说,使用minted
可以得到一个 PDF,其中复制的代码可以工作。minted
使用pygments
进行实际突出显示,因此您必须在shell-escape
启用的情况下进行编译,例如pdflatex --shell-escape filename.tex
。使用代码
\documentclass[a4paper,12pt,headsepline,automark]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{gensymb}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage{minted}
\usepackage{hyperref}
\begin{document}
\begin{minted}{R}
A <- matrix(c(0.15, 0.01, 0,
0.14, 0.36, 0.07,
0.15, 0.13, 0.3), ncol = 3, byrow = TRUE)
I = diag(nrow = nrow(A))
I%*%A
\end{minted}
\end{document}
我得到了输出
从 PDF 复制到 RStudio 中的控制台,我得到以下控制台输出:
>
> A <- matrix(c(0.15, 0.01, 0,
+ 0.14, 0.36, 0.07,
+ 0.15, 0.13, 0.3), ncol = 3, byrow = TRUE)
> I = diag(nrow = nrow(A))
> I%*%A
[,1] [,2] [,3]
[1,] 0.15 0.01 0.00
[2,] 0.14 0.36 0.07
[3,] 0.15 0.13 0.30
>
>
答案2
正如评论中所建议的,我只是将评论添加为答案。 可以直接使用正确的unicode符号来完成,即%(*\symbol{"002A}*)%
并按(*\symbol{"002D}*)
预期工作。