在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表示法解释为带有普通数字的样式列表的指令。希望在将来的版本中它会更灵活,并且会在列表中添加对嵌套数字的支持。
答案 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 function和336)上有两个要求提供原生降价解决方案的功能请求,以及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
但是文档的所有列表都会受到影响,您需要自己编写乳胶编译命令。