Pandoc 生成的 PDF:更改列表编号样式
Pandoc-generated PDF: Change list numbering style
如何改变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 符号解释为使用纯数字样式列表的指令。希望在未来的版本中它会更灵活一些,并将添加对列表中嵌套数字的支持。
编辑
This function 添加 \def\labelenumi{}
部分的 latex writer 检查 numstyle == DefaultStyle && numdelim == DefaultDelim
。正如@oleg 发现的那样,这可以通过 #.
列表标记来完成,因此这应该有效:
---
header-includes:
- \renewcommand{\labelenumii}{\theenumii}
- \renewcommand{\theenumii}{\theenumi.\arabic{enumii}.}
---
#. One
#. Two
#. Sub 1
#. Sub 2
有两个功能请求要求在问题跟踪器上提供本机降价解决方案 (336 and 1627), as well as a discussion on the mailing list。
预编辑答案
当然,您始终可以编译为 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
但是你文档的所有列表都会受到影响,需要你自己写latex编译命令。
如何改变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 符号解释为使用纯数字样式列表的指令。希望在未来的版本中它会更灵活一些,并将添加对列表中嵌套数字的支持。
编辑
This function 添加 \def\labelenumi{}
部分的 latex writer 检查 numstyle == DefaultStyle && numdelim == DefaultDelim
。正如@oleg 发现的那样,这可以通过 #.
列表标记来完成,因此这应该有效:
---
header-includes:
- \renewcommand{\labelenumii}{\theenumii}
- \renewcommand{\theenumii}{\theenumi.\arabic{enumii}.}
---
#. One
#. Two
#. Sub 1
#. Sub 2
有两个功能请求要求在问题跟踪器上提供本机降价解决方案 (336 and 1627), as well as a discussion on the mailing list。
预编辑答案
当然,您始终可以编译为 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
但是你文档的所有列表都会受到影响,需要你自己写latex编译命令。