Передача параметров из R Markdown в латекс - PullRequest
0 голосов
/ 17 февраля 2019

Добрый вечер, я хотел бы передать пользовательские параметры из Rmd в заголовок (используя fancyhdr) документа PDF.Я попробовал приведенный ниже код, но я не знаю, как он может интерпретировать \ parames $ figureno ... и я получаю эту ошибку при вязании:

 ! Undefined control sequence.
\f@nch@och ->\parames 
                      $figureno\strut 
l.169 \end{document}

Вот код в Rmd:

output: 
pdf_document:
  keep_tex: true
  includes:
      in_header: header.tex
params:
  figureno: "Fig. 1-1"

И header.tex:

\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[CO,CE]{\parames$figureno}
\fancyfoot[CO,CE]{And this is a fancy footer}
\fancyfoot[LE,RO]{\thepage}
\renewcommand\headrule{%
       \vspace{3pt}
       \hrulefill}

Как мне заставить его работать?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Я использовал решение, предложенное Мартином Шмельцером (выше).С тем преимуществом, что я все еще могу включить другой * .tex для разработки заголовка со статическим содержимым.

---
template: default-1.17.0.2.tex
title: "Some test..."
figureno: "Fig. 1-1"
output: 
  pdf_document:
    includes:
      in_header: header.tex
    keep_tex: true

---

Я вставил эти две строки в основной шаблон (default-1.17.0.2.tex):

\usepackage{fancyhdr}
\fancyhead[RO,RE]{$figureno$}
0 голосов
/ 18 февраля 2019

Вы можете сделать это, но это сложно.Способ, который работает, состоит в том, чтобы поместить все header.tex в поле header-includes: заголовка YAML.(К сожалению, у вас не может быть и header-includes:, и includes: in_header.) Вы можете выполнить R-код в строках в заголовке YAML, чтобы вы правильно установили \fancyhead.Например:

---
output: 
  pdf_document:
    keep_tex: true
header-includes: 
  - \usepackage{fancyhdr}
  - \pagestyle{fancy}
  - '`r paste0("\\fancyhead[CO,CE]{", params$figureno, "}")`'
  - \fancyfoot[CO,CE]{And this is a fancy footer}
  - \fancyfoot[LE,RO]{\thepage}
  - \renewcommand\headrule{\vspace{3pt}\hrulefill}
params:
  figureno: "Fig. 1-1"
---

Обратите внимание, что обратный слеш необходимо удвоить в коде R paste0("\\fancyhead[CO,CE]{", params$figureno, "}"), чтобы в результате получился один обратный слеш в результате.

Также обратите внимание, что код R должен быть встроенным кодом R, заключенным в обратные черты , а затем также , заключенным в кавычки как строковую константу.Я видел рекомендации по использованию одинарных кавычек в строковой константе вместо двойных, но я не знаю, имеет ли это значение.

...