Hack R Markdown 或 Bookdown 以包含出现在 html 或 docx 输出中的 LaTeX 环境?

low*_*rul 1 latex r r-markdown bookdown

我想在我的 .Rmd bookdown 文件中包含 LaTeX 环境(例如, algorithmicfrom algorithmicxminifrom optidefdcasesfrom等)。mathtools这对于 pdf 输出来说没有问题。但这些不会呈现 html 或 docx 输出。

我当前的黑客解决方案:

  1. 生成 .pdf 输出。
  2. 屏幕截图、编辑、将感兴趣的图像保存为 png
  3. 包含图像的条件是输出不是 LaTeX

缺点:

  1. 显然无法扩展
  2. docx 和 html 输出中的图像很难看
  3. 带图交叉参考的螺钉

必须有更好的方法,对吗?我在想有一种方法可以告诉 rmarkdown/LaTeX,当渲染为 pdf 时,某些代码块应该以某种图像格式保存。这样,它们就可以作为图像添加回文档中,条件是输出文档是 docx 或 html。这可能吗?

更新:对 TikZ 独立图的回答提出了一种涉及 LaTeXstandalone包的方法。但不幸的是,人们发现它不能与独立的算法一起工作,这不适用于该algorithm环境。有任何想法吗?

索引.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)
Run Code Online (Sandbox Code Playgroud)

myalgo.png

在此输入图像描述

use*_*330 6

对于数学,R Markdown 使用 MathJax,并且只有 LaTeX 的子集可用。该子集包括基本数学宏和环境,并允许您定义新宏,但不支持让您使用任意 LaTeX 包所需的一切。有关详细信息,请参阅 http://docs.mathjax.org/en/latest/tex.html

您也许能够创建一个类似于algorithm或 的环境algorithmic,但这需要大量工作,而且可能看起来不太好。

您可能应该选择使用所有 LaTeX 进行格式化的 PDF 输出,或者样式较少的某种 HTML 输出。例如,您可以将算法编写为

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

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

******
Run Code Online (Sandbox Code Playgroud)

它将显示为


算法 1:我的算法


  1. 做这个。
  2. 去做。

  • PNG 是一种位图格式,会导致缩放问题。您可以尝试使用 SVG。我不认为 LaTeX 可以直接生成 SVG,但是有一个“pdf2svg”实用程序可以在“pdflatex”输出目标 HTML 上完成看起来合理的工作。我不知道 Word 处理 SVG 文件的效果如何。 (3认同)