我使用 latex2exp 包在 R 中制作一些带有标签中的 latex 表达式的图。xlabelTeX("$\lambda$")
上没有打印需要的内容。文档说使用 TeX(r'($\lambda$)')
哪个不起作用,也 TeX("$\\lambda$")
不起作用。例如,plot(1:5, 1:5, xlab = Tex(r'($\lambda$)'))
xlabel 上没有 lambda 字符。我该如何解决这个问题?
答案1
答案2
这文档提到latex2exp
以下内容:
在 R 4.0 之前,需要在字符串文字中对反斜杠进行转义:因此,应该写成
'$\\gamma$'
而不是'$\gamma$'
(后者会导致错误)。在 R 4.0 之后,建议使用新的原始字符串文字语法(参见
?Quotes
)。语法如下r"(...)"
,其中...
可以包含任何字符序列,包括\
:
启动 R 时,您可以找到 R 版本,版本号会打印在终端窗口中。请注意,R 命令是TeX()
(大写 T、小写 e、大写 X,这是 TeX 的标准大写,而不是问题最后一段中写的 Tex - 但我猜那是打字错误。
以下在 R 3.6 中有效:
library(latex2exp)
plot(1:5, 1:5, xlab = TeX("$\\lambda$"))
结果:
对于 R 4.0 及以上版本,您可以使用新语法。请注意,您必须在字符串中明确包含分隔符。在上面的示例中,分隔符是'(
和)'
。在 R 4.0.3 中测试时,以下内容有效:
library(latex2exp)
plot(1:5, 1:5, xlab = TeX(r'($\lambda$)'))
)'
如果字符串中的某处有结束序列,则此方法不起作用。在这种情况下,你可以使用破折号扩展分隔符,例如:
plot(1:5, 1:5, xlab = TeX(r'---($\lambda\cdot(a+b)'$)---'))
# more readable:
plot(1:5, 1:5, xlab = TeX(
r'---(
$\lambda\cdot(a+b)'$
)---'
))