我想用for循环创建Section标头,并设法做到了这一点,但是文本停留在数学模式格式下。我已经尝试使用Latex语法来撤消此操作,但是它没有按预期工作:
代码:
[0, 5, 0, 20]
输出:
如果我使用乳胶符号将其转换为文本格式,则没有任何变化:
---
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
答案 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]],'}')
}
这里的下划线对于我来说有点长,但是您可以轻松地将'collapse'参数替换为您喜欢的其他内容。 ... collapse ='\\textunderscore ') ...
也可以