Взломать в R Markdown или Bookdown для включения среды LaTeX, которые появляются в выводе html или docx? - PullRequest
0 голосов
/ 17 мая 2019

Я бы хотел включить среды LaTeX (например, algorithmic из algorithmicx, mini из optidef, dcases из mathtools и т. Д.) В мой файл .Rmd. Это не проблема для вывода PDF. Но они не отображаются для вывода html или docx.

Мое текущее решение взлома:

  1. Создание вывода в формате .pdf.
  2. Снимок экрана, редактирование, сохранение изображений, представляющих интерес, как PNG
  3. Включить изображения при условии, что вывод не является LaTeX

Downsides:

  1. Очевидно, не масштабируется
  2. Изображения выглядят ужасно в формате docx и html
  3. Винты с перекрестными ссылками на фигуры

Должен быть лучший подход, верно? Я думал, что есть способ сообщить rmarkdown / LaTeX, что при рендеринге в формате pdf определенные фрагменты кода должны быть сохранены в каком-либо формате изображения. Таким образом, они могут быть добавлены обратно в документ в виде изображений, условных для выходного документа docx или html. Это вообще возможно?

ОБНОВЛЕНИЕ: Ответ на автономные диаграммы с TikZ предлагает подход с использованием пакета LaTeX standalone. Но, к сожалению, в автономно не работает с алгоритмами , что это не работает для среды algorithm. Есть идеи?

index.Rmd

---
title: "Bookdown"
header-includes:
  - \usepackage{float}
  - \floatplacement{figure}{!htb}
  - \usepackage{algorithm}
  - \usepackage{algpseudocode}
output: 
  bookdown::gitbook:
    split_by: none
  bookdown::pdf_book:
    fig_caption: yes
    keep_tex: yes
    toc: no
  bookdown::word_document2: default
site: bookdown::bookdown_site
---

```{r setup, include=FALSE, }
knitr::opts_chunk$set(echo = TRUE)
```

Hello zero

# First Chapter 

Hello one

\begin{algorithm}
    \caption{My Algo}
    \begin{algorithmic}[1]
        \State Do this.
        \State Do that.
    \end{algorithmic}
\end{algorithm}

```{r myalgo, echo=FALSE, eval = !knitr:::is_latex_output(), fig.cap="Must have text here. For cross-referencing to work."}
knitr::include_graphics("myalgo.png")
```

Hello two. 

Check out this picture: \@ref(fig:myalgo)

myalgo.png

enter image description here

1 Ответ

1 голос
/ 19 мая 2019

Для математики R Markdown использует MathJax, и доступно только подмножество LaTeX.Это подмножество включает базовые математические макросы и среды и позволяет вам определять новые макросы, но не поддерживает все необходимое, чтобы позволить вам использовать произвольные пакеты LaTeX.Подробнее см. http://docs.mathjax.org/en/latest/tex.html.

Возможно, вам удастся создать среду, похожую на algorithm или algorithmic, но это будет много работы и, вероятно, выиграет 'Выглядит так же хорошо.

Вы, вероятно, должны выбрать между выводом в PDF со всем LaTeX, доступным для форматирования, или некоторым вариантом вывода в HTML с меньшим стилем.Например, вы можете написать свой алгоритм как

******
**Algorithm 1**:  My algo

******
1.  Do this.
2.  Do that.

******

, и он будет отображаться как


Алгоритм 1 : Мой алгоритм


  1. Сделай это.
  2. Сделай это.

...