在Markdown文档中编写TeX方程并将它们转换为实际排版方程using pandoc(版本1.18),在PDF文档(通过LaTeX)或HTML文档(通过MathJax)中很容易:环绕数学$...$
用于内联方程,$$...$$
用于方程组。
但是,MathJax和TeX语法之间似乎存在差异,例如%
等特殊字符。例如,请考虑以下示例文档:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
$$\text{\% change} = \frac{x_2 - x_1}{x_1} \times 100$$
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
使用命令
通过LaTeX将其转换为PDFpandoc test.md -o test.pdf
正确生成未转义的百分号:
但是,使用命令
将同一文档转换为使用MathJax的HTMLpandoc test.md -s --mathjax -o test.html
错误地生成转义百分号:
目前,在将文档转换为PDF / HTML之前,我一直在手动转义/取消百分号,这似乎违背了可以转换为任何格式的主Markdown文档的目的。
在TeX和MathJax中处理转义百分号的正确方法是什么? MathJax中是否有允许特殊字符转义的设置?我是否需要告诉LaTeX在数学模式中接受未转义的百分号?
答案 0 :(得分:0)
(我知道这不是在[R]下标记的,但我知道Andrew是一个狂热的R和Rmarkdown用户,所以我希望这就足够了。)
这可以使用Rmarkdown和knitr。使用rmarkdown::render
渲染时,下面的脚本会生成所需的输出。我还创建了一个gist of the script。
---
title: TEST
output:
pdf_document:
latex_engine: xelatex
html_document:
fig_caption: true
---
```{r, echo = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
echo = TRUE,
cache = FALSE,
comment = "#>",
fig.path = "fig-",
fig.pos = "h"
)
# this will check what the output format is going to be
getOutputFormat <- function() {
knitr::opts_knit$get("rmarkdown.pandoc.to")
}
```
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
```{r, warning=FALSE, message=FALSE, echo=FALSE, eval=TRUE, results='asis'}
s <- "$$\\text{\\% change} = \\frac{x_2 - x_1}{x_1} \\times 100$$"
if(getOutputFormat() == 'html') s <- gsub('\\\\%', '%', s) # dont escape if html
knitr::asis_output(s)
```
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.