Обоснуйте текст в выводе html Rmarkdown в заголовок YAML - PullRequest
1 голос
/ 05 ноября 2019

Я хочу выровнять текст в html-файле Rmarkdown с обеих сторон. Я знаю, как это сделать, используя <style> body {text-align: justify} </style> после заголовка YAML (согласно этому ответу):

---
output: html_document
---

<style> body {text-align: justify} </style> <!-- Justify text. -->

# Text that is justified on both sides

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>. When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this. This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see <http://rmarkdown.rstudio.com>. When you click the **Knit** button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this. 

Однако я хочу найти способ указать это в YAMLзаголовок напрямую, а не после заголовка YAML, но без необходимости прибегать к дополнительным файлам .css в том же хранилище. Другими словами, я не хочу помещать небольшой кусочек HTML-кода в отдельный файл .css и вызывать его через

output:
  html_document:
    css: justify.css

, и я не хочу, чтобы он был в основном тексте Rmarkdown. файл. Как я могу это сделать?

1 Ответ

0 голосов
/ 06 ноября 2019

Используя обычный pandoc, можно использовать поле include-headers. Ссылаясь на руководство pandoc:

Необработанный контент для включения в заголовок документа может быть указан с помощью header-include;однако важно пометить этот контент как необработанный код для определенного выходного формата, используя расширение raw_attribute), иначе он будет интерпретироваться как уценка. Например:

header-includes:
  - |
    ```{=latex}
    \let\oldsection\section
    \renewcommand{\section}[1]{\clearpage\oldsection{#1}}
    ```

Моя интерпретация этой проблемы RMarkdown заключается в том, что это не будет работать в RMarkdown. Только файлы могут быть включены. Однако одна из связанных с этим проблем предлагает обходной путь, при котором файл создается с помощью фрагмента R в заголовке YAML:

---
output:
  html_document:
    includes:
      in_header: header.html
dummy: "`<style>body {text-align: justify; color: green}</style>`{cat, engine.opts=list(file='header.html')}"
---

Не совсем красиво, но работает, как нужно.

...