Pandoc 方程编号样式

Pandoc 方程编号样式

我使用 pandoc 从 markdown 渲染 .pdf 文件。示例输入:

#Fudamental matrix
##Epipolar constraint in pixels

(@) $$(K_{0}^{-1}x)^{T}E(K_{1}^{-1}x')=0$$

(@) $$x^{T}((K_{0}^{-1})^{T}EK_{1}^{-1})x'=0$$

(@fundam) $$x^{T}F x'=0$$

这将使我的方程式具有以下数字:(1)、(2)、(3)。我希望有:(1.1)、(1.2)、(1.3),其中第一个数字是章节编号,或者甚至是 (1.1.1)、(1.1.2) 等,以及子章节编号。

我有一个文件 templateAdd.tex,其中包含:

\usepackage{titlesec}
\newcommand{\sectionbreak}{\clearpage}

我尝试将以下内容添加到文件中:

\usepackage{amsmath}
\renewcommand{\theequation}{\thechapter--\arabic{equation}}

如所述这里,但这根本不会改变数字渲染 - 它仍然是(1),(2)等等。

我的 pandoc 调用:

pandoc -s --mathjax --highlight-style pygments --number-sections --include-in-header   templateAdd.tex -o output\output.pdf -c style_print.css background.md 

答案1

发生这种情况是因为 pandoc 将(@)符号解释为列表标记,特别是括号内的有序列表。如果您检查 pandoc 的 latex 输出,就会看到:

输入:

(@) $$(K_{0}^{-1}x)^{T}E(K_{1}^{-1}x')=0$$

输出:

\begin{enumerate}
\def\labelenumi{(\arabic{enumi})}
\item
  \[(K_{0}^{-1}x)^{T}E(K_{1}^{-1}x')=0\]
\end{enumerate}

为了获得所需的编号,您必须将公式转换为乳胶方程式。您可以通过在 markdown 中使用一些内联乳胶来实现这一点,如下所示:

\begin{equation}
(K_{0}^{-1}x)^{T}E(K_{1}^{-1}x')=0
\end{equation}

并在 templateAdd.tex 中添加以下行:

\numberwithin{equation}{section}

您可以更改sectionsubsectionsubsubsection获取 (1.1) (1.1.1) 或 (1.1.1.1) 编号样式。

答案2

另一种方法是使用pandoc-eqnos过滤器,处理属性公式。例如,

$$ (K_{0}^{-1}x)^{T}E(K_{1}^{-1}x')=0 $$ {#eq:foo}

当 pandoc 的输出格式设置为 LaTeX 或 pdf 时,pandoc-eqnos 会将属性公式转换为编号的 LaTeX 方程式。该方程式可以引用为 Eq.@eq:foo。

为了获得所需的编号样式,您仍然需要输入

\numberwithin{equation}{section}

在您的 LaTeX 模板中更改sectionsubsectionsubsubsection以获取 (1.1) (1.1.1) 或 (1.1.1.1) 编号样式。

相关内容