Смешанный альбом + портретные страницы при создании текстового документа из RMarkdown - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь создать текстовый документ из RMarkdown - пока что все было отлично, за исключением того, что мне нужно вывести 4-страничный отчет, первая страница - портретная, следующие 2 страницы с альбомной ориентацией ggplots и последняя страница с ggplot в портрете.

Я испробовал все возможные решения. Я сделал 4 страницы в справочном документе, которые имеют нужную ориентацию, но это не сработало. Я также попытался это решение , используя файл header.tex, который будет содержать это:

\usepackage{lscape}
\newcommand{\blandscape}{\begin{landscape}}
\newcommand{\elandscape}{\end{landscape}}

и это решение Я видел в StackOverflow с использованием фильтра lua в pandoc_args.

---
title: "Example"
output: 
  word_document:
    pandoc_args:
     '--lua-filter=page-break.lua'
---

Решением, которое решит мою проблему, будет следующий аргумент из пакета officedown: https://github.com/davidgohel/officedown

<!---BLOCK_LANDSCAPE_START--->

Blah blah blah.

<!---BLOCK_LANDSCAPE_STOP--->

но, к сожалению, я не могу загрузить его с помощью devtools () с моей работы RServer, где мне это нужно. Можно ли каким-то образом использовать и управлять некоторыми функциями в Officer (версия officedown без уценки), чтобы получить сочетание книжной и альбомной ориентации в моем документе? Например, у офицерского пакета есть эта функция: https://github.com/davidgohel/officer/blob/master/R/docx_section.R

body_end_section_landscape <- function( x, w = 21 / 2.54, h = 29.7 / 2.54 ){
  w = w * 20 * 72
  h = h * 20 * 72
  pgsz_str <- "<w:pgSz w:orient=\"landscape\" w:w=\"%.0f\" w:h=\"%.0f\"/>"
  pgsz_str <- sprintf(pgsz_str, h, w )
  str <- sprintf( "<w:pPr><w:sectPr><w:officersection/>%s</w:sectPr></w:pPr>", pgsz_str)
  str <- paste0( wp_ns_yes, str, "</w:p>")
  as_xml_document(str)
  body_add_xml(x, str = str, pos = "after")
}

#' @export
#' @rdname sections
body_end_section_portrait <- function( x, w = 21 / 2.54, h = 29.7 / 2.54 ){
  w = w * 20 * 72
  h = h * 20 * 72
  pgsz_str <- "<w:pgSz w:orient=\"portrait\" w:w=\"%.0f\" w:h=\"%.0f\"/>"
  pgsz_str <- sprintf(pgsz_str, w, h )
  str <- sprintf( "<w:pPr><w:sectPr><w:officersection/>%s</w:sectPr></w:pPr>", pgsz_str)
  str <- paste0( wp_ns_yes, str, "</w:p>")
  body_add_xml(x, str = str, pos = "after")
}

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...