Использование пользовательского шаблона для Rmd pdf без изменения текущей настройки - PullRequest
0 голосов
/ 18 октября 2018

Недавно я узнал, что изменение шаблона по умолчанию (Pandoc?) Для отчета Rmd pdf дает доступ к некоторой аккуратной настройке .

Таким образом, чтобы изменить шаблон по умолчаниюСначала я перемещаю его в свой рабочий каталог, используя:

file.copy(system.file("rmd/latex/default-1.17.0.2.tex", package ="rmarkdown"), "template.tex")

Затем я печатаю свой Rmd файл:

---
output:
  pdf_document:
    template: template.tex
    keep_tex: true
    latex_engine: xelatex
    includes:
      in_header: in_header.tex
    number_sections: true
---

This is a rmd kind of document.

Где in_header.tex включает только одну строку

\geometry{a4paper, top=38mm, left=45mm, right=45mm}

Сначала я просто хочу запустить файл Rmd с шаблоном как есть (не ожидая изменений), но отчет не может скомпилировать тогда и только тогда, когда я включу шаблон - в противном случае он запускаетсябез проблем.

Ошибка:

! Undefined control sequence.
l.58 \geometry
[...]

Вопрос

Как я могу использовать аргумент шаблона для создания редактируемого шаблона в моемрабочая папка без каких-либо других изменений в моих текущих настройках.

Info

> R.Version()[["version.string"]]
[1] "R version 3.5.1 (2018-07-02)"
> packageVersion("rmarkdown")
[1] ‘1.10’
> packageVersion("knitr")
[1] ‘1.20’

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Поскольку вы уже ведете это из R, вы также можете использовать (превосходный) пример, настроенный пакетом rtific , который предоставляет большое количество настроек LaTeX для (академических) работ.

И тогда вы можете бежать с ними.Например, за последние два года я добавил эти пакеты:

  • оттенок для современной «Tufte-alike» рецензии
  • pinp для очень хороших двухколоночных PDF-виньеток
  • ссылка для букв LaTeX и некоторых дополнительных
  • binb для вариантов пакетов beaner

Это позволяет вам

  • устанавливать пользовательские template.tex
  • , в зависимости от того, какие файлы класса LaTeX / файлы стилей вам нужны
  • программно установить параметры

Я считаю, что это предпочтительнее, чем копировать строфы, вокруг которых я делал ранее (например, для слайдов).

0 голосов
/ 18 октября 2018

Кажется, что функция rmarkdown::pdf_output делает несколько разных вещей, когда используется шаблон default.Например, он устанавливает переменную graphics=yes.Я подозреваю, что он также устанавливает geometry, но я не видел, где это делает.В любом случае, если вы хотите использовать пользовательский шаблон на основе шаблона по умолчанию, вы «боретесь» с этим блоком из шаблона:

$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$

Пакет geometry загружается только тогда, когда заголовок геометрииопределены.Одно простое решение вашей проблемы - переместить определение геометрии из заголовка, включенного в заголовок YAML:

---
geometry:
  - a4paper
  - top=38mm
  - left=45mm
  - right=45mm
output:
  pdf_document:
    template: template.tex
    keep_tex: true
    latex_engine: xelatex
    includes:
      in_header: in_header.tex
    number_sections: true
---

This is a rmd kind of document.

С этим вы можете удалить \geometry{...} из in_header.tex.

...