我使用 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}
您可以更改section
为subsection
或subsubsection
获取 (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 模板中更改section
为subsection
或subsubsection
以获取 (1.1) (1.1.1) 或 (1.1.1.1) 编号样式。