如何在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
的破解基本上是对作为该问题的答案而提出的一种黑客的改编。
---
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)\]
答案 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 的输出:
这适用于 .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:
这将为 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
另请注意,我用 \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
。