Я пишу документ Word с меткой R в R Studio. Я могу получить много вещей, но на данный момент я не понимаю, как я могу получить разрыв страницы. Я нашел решения, но только для сделанного латексного/pdf-документа, что это не мой случай.
Как добавить разрыв страницы в текстовый документ, созданный RStudio & markdown
Ответ 1
Существует более простой способ использования блока заголовка пятого уровня (#####
) и шаблона docx, определенного в YAML.
После создания headingfive.docx
в Microsoft Word вы выберите " Modify Style
Heading 5
, а затем выберите " Page break before
Line and Page Breaks
вкладке " Line and Page Breaks
" и сохраните файл headingfive.docx
файла headingfive.docx
.
---
title: 'Making page break using fifth-level header block'
output:
word_document:
reference_docx: headingfive.docx
---
В вашем документе Rmd
вы определяете reference_docx
в заголовке YAML, и теперь вы можете использовать разрыв страницы #####
.
См. Ниже.
https://www.r-bloggers.com/r-markdown-how-to-insert-page-breaks-in-a-ms-word-document/
Ответ 2
С помощью John MacFarlane и других пользователей в группе pandoc google я собрал фильтр, который делает это. Пожалуйста, посмотри:
https://groups.google.com/forum/#!topic/pandoc-discuss/FzLrhk0vVbU
Короче говоря, фильтр должен искать что-то, заменяемое openxml для разметки страницы. В этом случае
\newpage
заменяется на
<w:p><w:r><w:br w:type=\"page\"/></w:r></w:p>
Это позволяет интерпретировать одну латексную разметку как для pdf, так и для вывода слов.
Joel
Ответ 3
То, что вы пытаетесь сделать, это заставить "разрыв страницы" или "новую страницу" в текстовом документе, сгенерированном с помощью Pandoc. Я нашел способ сделать это в своей среде, но я не уверен, что он будет работать в каждой среде.
Моя среда: * R-studio/Pandoc/MS-WORD, начиная с файла "*.Rmd" и создавая файл DOCX.
В моем файле RMD ключевой идеей является то, что я создал то, что действует как документ TEMPLATE (MyFormattingDocument.docx), и в этом документе слова я настраиваю STYLES для таких вещей, как "Заголовок 1" и/или "Заголовок 2", или "сноска" или любые другие предопределенные стили, которые я хочу настроить.
(СМОТРИТЕ ЭТО: http://rmarkdown.rstudio.com/word_document_format.html#style-reference) для объяснения ссылки на стиль и как установить информацию заголовка в вашем файле RMD, чтобы указать ссылочный документ.
SOOOO в моем случае... я настраиваю стиль "Заголовок 1" в WORD, чтобы включить принудительный "разрыв страницы перед" в форматировании абзаца для "Заголовок 1" . Точно так же, как вы каждый раз нажимаете "Заголовок 1" на "Разрыв страницы" в разных версиях Microsoft WORD, но если вы следуете документации WORD и изменяете стиль "Заголовок 1" , ТОГДА у каждого "заголовка 1" всегда будет разбиение страницы перед он.
THEN... вы сохраняете этот файл шаблона в каком-то каталоге, с которым работаете, с файлом RMD... и он используется как шаблон. СОДЕРЖАНИЕ файла игнорируются.... так что не волнуйтесь... вы можете поместить образец текста в этот файл и проверить, что форматирование все работает... СОДЕРЖАНИЕ ИМЕЕТСЯ, но СТИЛИ ИСПОЛЬЗУЮТСЯ в новом который будет создан файлом RMD, поэтому... тогда у каждого "заголовка 1" будет разрыв перед ним.
ПРИМЕЧАНИЕ. Очевидно, вы могли бы сделать то же самое с ЛЮБЫМ стилем, который имеет индивидуальное сопоставление от PANDOC MARKUP, чтобы вы могли просто сделать все "Заголовок 3" или что-то еще... просто посмотрите на свое RMD создал DOCX, что применяется "STYLE", а затем настраивает этот стиль, даже если вам нужно вставить некоторые "поддельные" строки с по существу пустым содержимым только для того, чтобы заставить стиль появляться в DOCX
Ответ 4
Вот скрипт R, который можно использовать в качестве фильтра pandoc для замены разрывов LaTeX (\pagebreak
) на разрывы слов, согласно ответу @JAllen выше. При этом вам не нужно компилировать скрипт pandoc. Поскольку вы работаете в R Markdown, я предполагаю, что в системе есть R.
#!/usr/bin/env Rscript
json_in <- file('stdin', 'r')
lat_newp <- '{"t":"RawBlock","c":["latex","\\\\newpage"]}'
doc_newp <- '{"t":"RawBlock","c":["openxml","<w:p><w:r><w:br w:type=\\"page\\"/></w:r></w:p>"]}'
ast <- paste(readLines(json_in, warn=FALSE), collapse="\n")
ast <- gsub(lat_newp, doc_newp, ast, fixed=TRUE)
write(ast, "")
Сохраните это как page-break-filter.R
или что-то в этом роде и сделайте его исполняемым, запустив chmod +x page-break-filter.R
в терминале.
Затем включите этот фильтр в R Markdown YAML следующим образом:
---
title: "Title
author: "Author"
output:
word_document:
pandoc_args: [
"--filter", "/path/to/page-break-filter.R"
]
---
Ответ 5
Вы можете использовать пакет R worded
. Это позволяет избежать необходимости создания файла шаблонов. См. Https://github.com/davidgohel/worded.
Параметр output
должен быть установлен в worded::rdocx_document
и вам нужно вызвать library(worded)
.
---
date: "2018-03-27"
author: "David Gohel"
title: "Document title"
output:
worded::rdocx_document
---
'''{r setup, include=FALSE}
library(worded)
'''
Затем вы можете добавить <!---CHUNK_PAGEBREAK--->
к вашему документу всякий раз, когда вам нужен разрыв страницы.
Пакет позволяет использовать различные варианты форматирования слов с использованием аналогичного механизма.
Ответ 6
Статья Сунгпил была близка, но не совсем работала. Это было лучшее решение, которое я нашел для этого: https://scriptsandstatistics.wordpress.com/2015/12/18/rmarkdown-how-to-inserts-page-breaks-in-a-ms-word-document/
Еще лучше, автор включил шаблон Word, чтобы сделать эту работу. Ссылка R-blogger на его шаблон нарушена, а заголовок отформатирован неправильно. Некоторые заметки, которые я взял:
1) Возможно, вам потребуется включить весь путь к шаблону слова в свой заголовок Rmd, например:
output:
word_document:
reference_docx: C:/workspace/myproject/mystyles.docx
2) Шаблон на ссылке выше изменил некоторые настройки стиля по умолчанию, поэтому вам нужно будет их вернуть
Ответ 7
Мое решение не очень надежное, но может работать для некоторых из нас.
Предполагая, что вам нужен разрыв страницы перед каждым заголовком уровня 1 в вашем текстовом документе, я определил это в шаблоне формата, используемом в поле yaml reference_docx:
.
В этом документе вы изменяете формат заголовка 1 (или эквивалент), чтобы вставить разрыв страницы перед заголовком. Не забудьте запустить свой шаблон с первым docx, созданным с помощью knitr (pandoc) в RStudio.
Ответ 8
Это не автоматизированное решение. Но я добавляю текст "##### page break" в мой документ с уценкой. Затем в MS Word используйте find-replace, чтобы заменить текст "разрыв страницы" на "^ m" (ручная пауза страницы).
Ответ 9
Хорошо, я нашел это в документах по уценке.
Горизонтальное правило/разрыв страницы
Три или более звездочки
***
или тире---
.