Я думаю, что нужно сделать две вещи. Во-первых, чтобы включить дословный код LaTeX, который будет правильно интерпретироваться RMarkdown, вам нужно установить опцию knitr chunk results='asis'
.
```{r output, include=TRUE, results='asis'}
str_tbl <- readLines(obj_filepath)
cat(str_tbl, sep = '\n')
```
Как только вы это сделаете, строка "\\pagebreak"
будет правильно интерпретироваться как команда LaTeX. Так что следующий код успешно создаст разрыв страницы.
cat('\n', file = obj_filepath, append = TRUE)
cat('\n', file = obj_filepath, append = TRUE)
cat("\\pagebreak", file = obj_filepath, append = TRUE)
cat('\n', file = obj_filepath, append = TRUE)
Вот полный документ:
---
title: "My_RMarkdown_Document"
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE, comment = NA)
```
```{r txt file, include=FALSE}
if(file.exists('./output.txt'))
file.remove('./output.txt')
obj_filepath <- file.path('./output.txt')
```
```{r, include=FALSE}
for(f in 1:5){
context <- "I am generating a list of tables in Rmarkdown \nand put them into a txt file, \nand then read content from the file to knit a PDF. \nHowever, \ncurrently I can only insert \\\\n but not page break. \nI want to generate a PDF with 5 pages if there are 5 tables (1 table/page), \nI tried \\\\pagebreak but doesn't work. \nAny suggestions? \nMany thanks."
cat(context, file = obj_filepath, append = TRUE)
cat("\n", file = obj_filepath, append = TRUE)
cat("\n", file = obj_filepath, append = TRUE)
cat("\\pagebreak", file = obj_filepath, append = TRUE)
cat("\n", file = obj_filepath, append = TRUE)
}
cat('\n', file = obj_filepath, append = TRUE)
tools::md5sum(normalizePath(obj_filepath))
```
```{r output, include=TRUE, results='asis'}
str_tbl <- readLines(obj_filepath)
cat(str_tbl, sep = '\n')
```