Распечатайте код латекса в файл .tex, используя cat() или print()

Я хочу напечатать фрагмент латексного кода с помощью R. Раньше я использовал для этого функцию cat(), моя проблема в том, что это быстро становится громоздкой задачей, когда у меня есть большой текст, включая таблицы, написанные в латексе, как я включить дополнительные обратные косые черты в R. т.е., если я хочу tex-файл со следующим:

\begin{document}

Мне нужно было бы написать что-то вроде

cat("\\begin{document}", file= test.tex, append = T, sep="\n")

in R.

Я также пробовал:

sink("test.tex")
print("\begin{document}", quote = F)
sink()

что почти дает мне желаемый результат, за исключением того факта, что он печатает номера строк перед текстом, а точнее печатает:

[1] \begin{document}

Есть ли способ написать простой латексный код в R и заставить его работать правильно, не добавляя дополнительных обратных косых черт или номеров строк? Я знаю, что есть более сложные решения с использованием sweave, Knitr, Rmarkdown, но я бы предпочел решение с использованием print/writeLines/cat и т. д.


person Tordir    schedule 01.10.2019    source источник
comment
Если вы получаете [1] \begin{document} с помощью редактора, поддерживающего замену регулярных выражений, например RStudio, довольно легко удалить все подстроки как [1]   -  person iago    schedule 01.10.2019


Ответы (1)


Если вы вставляете текст в консоль или передаете файл в R из командной строки, вы можете использовать что-то вроде этого:

latex <- scan(what = character())
\begin{document}
\end{document}

writeLines(latex, "test.tex")

где пустая строка говорит scan() прекратить чтение. Однако, если вы поместите эти строки в файл и source(), вы получите ошибку, потому что это не весь синтаксически правильный код R.

Вам определенно лучше использовать knitr с вводом .Rnw.

person user2554330    schedule 01.10.2019