TeX("$\lambda$") 在 R 中不起作用

TeX("$\lambda$") 在 R 中不起作用

我使用 latex2exp 包在 R 中制作一些带有标签中的 latex 表达式的图。xlabelTeX("$\lambda$")上没有打印需要的内容。文档说使用 TeX(r'($\lambda$)')哪个不起作用,也 TeX("$\\lambda$")不起作用。例如,plot(1:5, 1:5, xlab = Tex(r'($\lambda$)'))xlabel 上没有 lambda 字符。我该如何解决这个问题?

答案1

使用knitrtikz设备时不需要latex2expTeX()功能,只需转义反斜杠。

姆韦

\documentclass{article}
\begin{document}
<<foo,echo=F,dev='tikz',fig.width=3, fig.height=3, fig.align='center'>>=
plot(1:5, 1:5, xlab = '$\\lambda$ with \\LaTeX')
@
\end{document}
   

答案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)'$
   )---'
))

相关内容