R Markdown文档带有html / docx输出,使用LaTeX包bbm吗?

时间:2019-05-19 19:17:08

标签: html r ms-word latex r-markdown

如何在R markdown中将LaTeX软件包bbm用于html / docx输出?

当前,我正在使用下面的hack解决方案,实际上,我只是放弃了使用软件包bbm来输出.docx / .html。有没有可以继续使用该软件包的黑客解决方案?

请注意,这个问题与我的问题In an R Markdown document, “includes” for docx output?有关,在这里我专门询问如何将这些特殊的<!--- For DOCX Only --->代码块移动到preamble-word.tex文件中,以将其包含在YAML中标头。这个问题也与问题How to get \bm{} to work in an R markdown (to HTML) file?有关。我目前对bbm的破解基本上是对作为该问题的答案而提出的一种黑客的改编。

tinytextest.Rmd

---
title: "TinyTeX Test"
author: "Me"
date: "5/3/2019"
header-includes:
  - \usepackage{bbm}
output:
  pdf_document: default
  html_document: default
  word_document: default
---

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

<!--- For HTML Only --->
`r if (knitr:::is_html_output()) '
$\\newcommand{\\mathbbm}[1]{\\mathbf{#1}}$
'`

<!--- For DOCX Only --->
`r if (!knitr:::is_latex_output() & !knitr:::is_html_output()) '
\\newcommand{\\mathbbm}[1]{\\mathbf{#1}}
'`

Hello

\[\mathbbm{1}_{S}(x)\]

.pdf输出

enter image description here

.docx / .html输出

enter image description here

3 个答案:

答案 0 :(得分:3)

好的,另一个答案,我刚刚意识到,这是两个略有不同的问题 - 一个由问题发起人提出,一个由赏金发起人提出。

<块引用>

我也需要解决这个问题。这是我的最低要求 预期有效的示例:

---
title: "Testing LaTeX packages in Docx format" 
output: word_document 
header-includes:
  - \usepackage{xfrac} 
--- 
  $$ \sfrac{1}{2} $$ ```

在这种情况下,MathJax 的概述答案将不会奏效。 MathJax 不支持 sfrac (http://docs.mathjax.org/en/latest/input/tex/macros/index.html)

我不知道您是否特别需要 \sfrac,但会支持 \frac 或 \tfrac。也许你可以改用这些。

这里有一个 \frac 的例子

 ---
 title: "Frac Test"
 header-includes: 
  - \usepackage{xfrac}
 output:
  pdf_document: default
  html_document: default
  word_document: default
---

$$
   \frac{1}{2}+1
$$

\frac 示例 html 的输出:

enter image description here

这适用于 .pdf/word 和 html。

这里以 \tfrac 为例

---
title: "TFrac Test"
header-includes: 
 - \usepackage{xfrac}
output:
  pdf_document: default
  html_document: default
  word_document: default
---

$$
   \tfrac{1}{2}+1
$$

输出 \tfrac 示例 html:

enter image description here

这将为 html、pdf 运行 - 对于 word 它将写入 1/2 而不是公式,因为 word 中没有 \tfrac 等效项。

\cfrac 和 \dfrac 也受 MathJax 支持。

答案 1 :(得分:2)

您可以通过 Mathjax 以某种方式解决大多数重要符号/字符的问题。以下是支持的符号/字符列表:http://docs.mathjax.org/en/latest/input/tex/macros/index.html 只需在那里寻找您需要的符号。

然后你像这样使用它:

$$
\require{mhchem}
\begin{equation}
  [C] + [R] 
  \xrightleftharpoons[k_{-1}]{k_1}
  [CR] + [C] 
  \xrightleftharpoons[k_{-2}]{k_2}
  [C2R]
(\#eq:multiplebinding)
\end{equation}
$$

因此您需要将命令括在 $$ 中。在这个例子中使用了 \xrightleftharpoons。从我上面链接的表格中,您可以看到在这种情况下您需要添加 \require{mhchem}。对于您的情况,这不是必需的,您只需要编写 \mathbb。

示例:

  ---
title: "TinyTeX Test"
header-includes:
  - \usepackage{mathbbol}
output:
  pdf_document: default
  html_document: default
  word_document: default
---

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

Hello Mori, this should work


$$
    \mathbb{1}_{S}(x)
$$

Greetings, Steffen

HTML 输出: enter image description here

字输出: enter image description here

另请注意,我用 \usepackage{mathbbol} 替换了 bbm - 否则它在为我呈现 pdf 时出错。这里讨论了 tex.stackexchange 上的 bbm ... 大多数人建议不要使用 bbm,因为有更好的包来获取符号 https://tex.stackexchange.com/questions/26637/how-do-you-get-mathbb1-to-work-characteristic-function-of-a-set

答案 2 :(得分:0)

好的,在 Steffen 的回答之后,我得出的结论是正确的答案是:不能在 docx 文档中包含 LaTeX 包(至少到目前为止).

唯一的解决方案是使用等效的 MathJax 支持的命令/符号。尽管如此,Steffen 的回答为我指明了 MathJax 支持的命令的正确方向(非常感谢!),所以我给了他赏金。

此外,由于我的具体问题是对角分数,我尝试了据称由 MathJax 支持的所有 frac 变体。其中有六个,其中以下有效:\dfrac\frac\dfrac,以下无效:\cfrac\flatfrac、和\genfrac