Название и автор не отображаются при предоставлении пользовательского шаблона в Bookdown - PullRequest
1 голос
/ 12 апреля 2020

У меня есть следующая структура проекта:

mybook/
├── _bookdown.yml
├── index.Rmd
├── c1.Rmd
├── c2.Rmd
├── template.tex

Файл _bookdown.yml:

rmd_files:
- c1.Rmd
- c2.Rmd
output_dir: _out
book_filename: _index_merged.Rmd

Файл index.Rmd is:

---
title: A simple book
author: Andrea Tino
---

Файлы c1.Rmd и c2.Rmd имеют тривиальное содержание: только заголовок Markdown и некоторый текст.

File template.tex is:

% !TeX program = pdfLaTeX
\documentclass{monograph}

\usepackage{hyperref}
\usepackage{newtxmath}

\makeindex

\begin{document}

\author{ $for(authors)$ $authors.name$ \and $endfor$ }
\title{$title$}
$if(subtitle)$
    \subtitle{$subtitle$}
$endif$

\maketitle
\tableofcontents

$body$

\printindex

\end{document}

Проблема

Когда я запускаю это из оболочки R (где рабочий каталог mybook/):

bookdown::render_book("index.Rmd", rmarkdown::pdf_document(template="template.tex", keep_tex=TRUE))

Я получаю PDF где:

  • Заголовок и автор отсутствуют.
  • Содержимое (результат c1.Rmd и c2.Rmd) фактически есть.

Посмотрев на _index_merged.tex (сгенерированный TEX, к которому я могу получить доступ, поскольку я указал keep_tex=TRUE внутри rmarkdown::pdf_document), я ясно вижу, что:

  • Заполнители $title$ и $author$ заменен пустыми строками, отсюда и пустой заголовок и автор.
  • Заполнитель $body$ заполнен содержимым.

Вот (соответствующий отрывок) содержание _index_merged.tex:

...
\begin{document}

\author{ }
\title{}

\maketitle
...

Почему шаблон неправильно выбирается заголовок и автор ?

1 Ответ

2 голосов
/ 18 апреля 2020

В bookdown, если вы укажете rmd_files в _bookdown.yml, только эти файлы будут обрабатываться в bookdown. Поскольку ваш заголовок и автор находятся в заголовке yaml index.Rmd, этот файл необходимо также включить в rmd_files. Или добавьте заголовок yaml в c1.Rmd

См. О rmd_files поведении в книге учета

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