Pandoc生成的PDF:更改列表编号样式

时间:2015-11-11 00:42:49

标签: latex markdown pandoc

在Pandoc生成的有序列表中更改数字样式的方法是什么?

对于以下Markdown输入

1. One
2. Two
    1. Sub 1
    2. Sub 2

Pandoc生成以下Latex输出

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\itemsep1pt\parskip0pt\parsep0pt
\item
  One
\item
  Two

  \begin{enumerate}
  \def\labelenumii{\arabic{enumii}.}
  \itemsep1pt\parskip0pt\parsep0pt
  \item
    Sub 1
  \item
    Sub 2
  \end{enumerate}
\end{enumerate}

这会产生以下PDF输出:

1. One
2. Two
    1. Sub 1
    2. Sub 2

我正在努力实现

1. One
2. Two
    2.1. Sub 1
    2.2. Sub 2

我尝试使用这些命令重新定义默认模板中的编号样式

\renewcommand{\labelenumii}{\theenumii}
\renewcommand{\theenumii}{\theenumi.\arabic{enumii}.}

但是当Pandoc为labelenumii生成明确的定义时,此解决方案不起作用。

更新

事实证明,使用#.表示法而不是1.表示法可以解决问题。无论出于何种原因,Pandoc仅为这样定义的列表跳过样式,并将标准Markdown表示法解释为带有普通数字的样式列表的指令。希望在将来的版本中它会更灵活,并且会在列表中添加对嵌套数字的支持。

1 个答案:

答案 0 :(得分:2)

修改

http://onsen.io/blog/make-facebook-hybrid-mobile-app-with-monaca/乳胶编写者添加\def\labelenumi{}部分检查numstyle == DefaultStyle && numdelim == DefaultDelim。正如@oleg发现的那样,这可能是通过#.列表标记完成的,所以这应该有效:

---
header-includes:
- \renewcommand{\labelenumii}{\theenumii}
- \renewcommand{\theenumii}{\theenumi.\arabic{enumii}.}
---

#. One
#. Two
    #. Sub 1
    #. Sub 2

在问题跟踪器(This function336)上有两个要求提供原生降价解决方案的功能请求,以及1627

预编辑答案

当然,你总是可以编译为latex,对文件进行后处理以删除那些\def\labelenumi{}行,然后编译latex文件。以下示例适用于标准乳胶模板。

test.md

---
header-includes:
- \renewcommand{\labelenumii}{\theenumii}
- \renewcommand{\theenumii}{\theenumi.\arabic{enumii}.}
---

1. One
2. Two
    1. Sub 1
    2. Sub 2

命令:

pandoc test.md -t latex -s | sed '/\\def\\labelenumi/d' > test.tex
xelatex test.tex

discussion on the mailing list

但是文档的所有列表都会受到影响,您需要自己编写乳胶编译命令。