我正在github上创建一个库,因此我使用Markdown文件,其结构如下:
# My main title
## My first section
...
## My second section
...
但是不幸的是,当我使用pandoc将该文档转换为乳胶时:
pandoc README.md --number-sections -f markdown -t latex -s -o doc.tex
文档没有任何标题,并且编号从主标题开始:
1. My main title
1.1. My first section
...
1.2. My second section
...
我想要类似
My main title <=== document title
1. My first section
...
2. My second section
...
我当然可以使用sed将所有##更改为#,并用% Document My main title
替换主标题,但对我来说似乎很脏。什么是进行的好方法?
谢谢!
答案 0 :(得分:1)
最好使用pandoc过滤器执行此操作。这是一个Lua过滤器,可以满足您的需求。将其存储在文件中promote-headers.lua
,然后用pandoc --lua-filter=promote-headers.lua
致电pandoc。
local title
-- Promote all headers by one level. Set title from level 1 headers,
-- unless it has been set before.
function promote_header (header)
if header.level >= 2 then
header.level = header.level - 1
return header
end
if not title then
title = header.content
return {}
end
local msg = '[WARNING] title already set; discarding header "%s"\n'
io.stderr:write(msg:format(pandoc.utils.stringify(header)))
return {}
end
return {
{Meta = function (meta) title = meta.title end}, -- init title
{Header = promote_header},
{Meta = function (meta) meta.title = title; return meta end}, -- set title
}
答案 1 :(得分:1)
从 Pandoc 中的 git commit 88dc6fac5d 开始,您现在可以使用 Pandoc 中的 --shift-heading-level-by
选项将元数据标题提升为一级标题(+1 shift),并将一级标题提升为元数据标题( -1 班)。这可以从 pandoc 2.8 及更高版本获得。潘多克manual reference