使用pandoc markdown在TeX和MathJax中使用转义百分号

时间:2017-05-23 13:14:06

标签: latex pandoc mathjax

在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将其转换为PDF
pandoc test.md -o test.pdf

正确生成未转义的百分号:

tex output

但是,使用命令

将同一文档转换为使用MathJax的HTML
pandoc test.md -s --mathjax -o test.html

错误地生成转义百分号:

html output

目前,在将文档转换为PDF / HTML之前,我一直在手动转义/取消百分号,这似乎违背了可以转换为任何格式的主Markdown文档的目的。

在TeX和MathJax中处理转义百分号的正确方法是什么? MathJax中是否有允许特殊字符转义的设置?我是否需要告诉LaTeX在数学模式中接受未转义的百分号?

1 个答案:

答案 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.