如何在保持正常格式的情况下将R文本变量插入Latex表达式

时间:2019-05-17 01:49:44

标签: r latex r-markdown

我想用for循环创建Section标头,并设法做到了这一点,但是文本停留在数学模式格式下。我已经尝试使用Latex语法来撤消此操作,但是它没有按预期工作:

代码:

[0, 5, 0, 20]

输出:

math_converted_text

如果我使用乳胶符号将其转换为文本格式,则没有任何变化:

---
title: "Troubleshooting"
author: "Me"
output: pdf_document
header-includes:
  - \usepackage{amsmath}
---


```{r} 
words <- c("plz_work","better_yet","what_is_this")
```

```{r, results='asis', echo=FALSE}
for (i in 1:3) {
cat('\\subsection{$',words[i],'$}')
}
```

如果我再次逃避```{r, results='asis', echo=FALSE} for (i in 1:3) { cat('\\subsection{$\text{',words[i],'}$}') } ``` ,即"$\text{..}$",则会收到错误消息:

"$\\text{..}$"

添加更多转义字符没有帮助。如果我尝试在不使用数学模式的情况下插入此变量,也会收到与我刚才列出的错误相同的错误:

! Missing $ inserted.
<inserted text> 
                $
l.283 \subsection{$\text{ plz_work }$}

Error: Failed to compile test_delete_is_ok.tex. See test_delete_is_ok.log for more info.
Execution halted

1 个答案:

答案 0 :(得分:1)

如Samcarter所述,在使用tex时,您还需要了解与tex相关的特殊含义。

在这种情况下-"_"符号在tex数学模式下用于表示即将下标的信号。当将包含"_"的R字符串传递到tex表达式中时,会抛出错误,因为"_"是为数学模式保留的(除非转义了)-这就是为什么当我将其括起来时没有错误$...$

对我来说,解决方案是在每个tex特殊字符之前添加转义符:

#original
words <- c("plz_work","better_yet","what_is_this")

#modified version. Replace collapse with other tex functions if needed
words2 <- lapply(strsplit(words,"_"), paste, collapse = '\\_')
for (i in 1:3) {
cat('\\subsection{',words2[[i]],'}')
}

enter image description here

这里的下划线对于我来说有点长,但是您可以轻松地将'collapse'参数替换为您喜欢的其他内容。 ... collapse ='\\textunderscore ') ...也可以