使用math2svg& CSS

使用math2svg& CSS

为了在 Pandoc 中创建编号方程式,我倾向于使用纯 LaTeX:

\begin{equation}
a^2 + b^2 = c^2
\end{equation}

在 PDF 格式中,它给出了一个很好的数字方程,但是,这个方程在 HTML 输出中根本没有显示,因为这个方程在\begin并且被忽略了。我想在 PDF 中保留编号,但希望方程显示在 HTML 中,无论带不带编号。

答案1

github 上有一个扩展:pandoc-crossref

安装它与

cabal update
cabal install pandoc-crossref

或者在 archlinux 中使用哈斯克尔

pacman -Sy pandoc-crossref

你可以使用通过做

$$ math $$ {#eq:label}
[@eq:label]

并编译

pandoc file.md --filter pandoc-crossref -o file.pdf

更多信息请参见文档

或者,如所述https://github.com/jgm/pandoc/issues/1938#issuecomment-74011358您可以用于--mathjaxHTML 渲染

如果你的方程是math.txt

$$ a^2 + b^2 = c^2 $$

创建文件header

<script type="text/x-mathjax-config">
  MathJax.Hub.Config({ TeX: { equationNumbers: {autoNumber: "all"} } });
</script>

并编译

pandoc math.txt -t html -s -o test.html --mathjax=https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML -H header 

答案2

在 pandoc 中你可以执行以下操作:

(@foo)  $a^2 + b^2 = c^2$

As (@foo) says, ...

(@bar)  $e = x + y$

这将为您提供 PDF 和 HTML 中的运行方程式数字。但是,方程式不会居中或显示格式。(您可以使用$$显示数学,但数字可能不会正确排列 - 虽然也许可以使用 CSS 修复这个问题。)

答案3

方程编号和参考文献的另一个选项是pandoc-eqnos筛选。

使用 bash 命令以 root 身份安装 pandoc-eqnos

pip install pandoc-eqnos 

要使用标签标记方程式eq:description,请使用

$$ y = mx + b $$ {#eq:description}

前缀#eq:是必需的,但description可以用字母、数字、破折号、斜线和下划线的任意组合替换。

要引用公式,请使用

@eq:description

要应用过滤器,请使用 pandoc 的以下选项:

--filter pandoc-eqnos

详细信息和演示请参见pandoc-eqnosgithub 上的网页。

答案4

使用math2svg& CSS

math2svg Pandoc 的 Lua 过滤器皈依者 LaTeX 数学MathJax生成 可缩放矢量图形 (SVG)以独立方式插入到输出文档中。SVG 输出为以下任意一种可用的 MathJax 字体

当 CSS 分页媒体引擎(例如Prince XML) 无法处理 MathJax 所要求的复杂 JavaScript。请参阅:https://www.print-css.rocks有关 CSS 分页媒体的信息,W3C 标准

下面的示例 CSS 代码中心显示数学运算,同时在右侧添加等式数字。

span.math.display {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    }

span.math.display svg {
    margin: 0 auto;
    max-width: 85%;
    }

span.math.display:after {
    counter-increment: equation;
    content: '(' counter(equation) ')';
    font-weight: bold;
    }

更多详细信息请访问math2svg 文档

使用 ConTeXt

如果语境用作生成 PDF 输出的引擎,那么只需在 LaTeX 显示公式前面加上\placeformulaConTeXt 命令在 Pandoc Markdown 输入中:

\placeformula
$$ a^2 + b^2 = c^2 $$

当需要多种输出格式时,最好使用GNUmakefile包含sed命令

SHELL := /usr/bin/env bash
NAME := $(basename $(wildcard *.md))

all: $(NAME).pdf $(NAME).docx

$(NAME).pdf: $(NAME).md
    pandoc \
    <(sed 's/^$$$$.*/\\placeformula\n&/' $<) \
    --smart --output=$(NAME).tex --to=context
    context $(NAME).tex

$(NAME).docx: $(NAME).md
    pandoc $< --smart --output=$(NAME).docx

相关内容