Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Latex Pandoc生成的PDF:更改列表编号样式_Latex_Markdown_Pandoc - Fatal编程技术网

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

Latex Pandoc生成的PDF:更改列表编号样式,latex,markdown,pandoc,Latex,Markdown,Pandoc,如何更改Pandoc生成的有序列表中的数字样式 对于以下降价输入 1. One 2. Two 1. Sub 1 2. Sub 2 Pandoc生成以下输出 \begin{enumerate} \def\labelenumi{\arabic{enumi}.} \itemsep1pt\parskip0pt\parsep0pt \item One \item Two \begin{enumerate} \def\labelenumii{\arabic{enumii}

如何更改Pandoc生成的有序列表中的数字样式

对于以下降价输入

1. One
2. Two
    1. Sub 1
    2. Sub 2
Pandoc生成以下输出

\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仅跳过以这种方式定义的列表的样式设置,并将标准标记符号解释为使用普通数字设置列表样式的指令。希望在未来的版本中,它会更灵活一些,并将添加对列表中嵌套数字的支持。

编辑

添加
\def\labelenumi{}
部分的latex编写器的属性检查
numstyle==DefaultStyle&&numdelim==DefaultDelim
。正如@oleg所发现的,这可以通过
#.
列表标记来完成,因此这应该可以工作:

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

#. One
#. Two
    #. Sub 1
    #. Sub 2
有两个功能请求要求在问题跟踪器(和)上提供本机降价解决方案,以及一个

预编辑答案

当然,您可以始终编译到latex,对文件进行后处理以删除那些
\def\labelenumi{}
行,然后编译latex文件。下面是一个使用标准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编译命令。

谢谢您的详细回答。现在看来,我仍然坚持使用默认编号,因为对于这样一个简单的问题来说,在编译过程中再添加一个步骤就太过了。不过有一个钩子。在代码中,仅当样式不是DefaultStyle且分隔符不是DefaultDelim时,才会生成\def指令。我不知道,但是,如何强迫他们有这些值我实际上不明白为什么默认值不是DefaultStyle。。。您可以使用
pandoc test.md-t native
测试列表是否为
OrderedList(1,十进制,句点)
。。。我无法将其更改为默认值,但这可能是可能的。说得好。它可能以某种方式连接到列表项的实际格式(例如,使用1.代替#)。我将尝试尝试一下,但如果Pandoc不创建“无样式”列表,这将是非常令人失望的,因为这是人们用降价方式编写列表的最常见方式。我的vim Markdown插件不会令人高兴幸运的是,事实证明这正是Pandoc所做的。如果使用“#.”作为标记有序列表的方式,则生成的代码没有\def指令,因此可以进行自定义。我希望他们选择用标准的“1”符号来代替。我将更新问题,并接受您的答案,因为它已导致解决方案。很高兴看到有一个解决办法。我认为你的更新应该是一个答案,你应该发布并接受它。@scoa,你的编辑使你的答案完整,因此我宁愿接受它而不是我的。谢谢你的帮助