Pandoc:将文档标题设置为第一个标题

托比亚斯·波拉(Tobias Bora)

我正在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但对我来说似乎很脏。什么是进行的好方法?

谢谢!

塔莱布

最好使用pandoc过滤器执行此操作。这是一个Lua过滤器,可以满足您的需求。将其存储在文件中,例如,promote-headers.lua然后使用调用pandoc pandoc --lua-filter=promote-headers.lua

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
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MS Word:自动将文档标题属性设置为具有“标题”快速样式的第一个文本

将Recyclerview的仅第一个位置设置为标题布局

应用标题是第一个活动的标题?

即使将multi选项设置为true,猫鼬也只会更新第一个文档

将页面标题的第一个单词与Javascript中的数组进行比较

awk:将列标题转置到行的第一个字段

Twitter共享链接将仅显示主题标题的第一个单词

the_title() 显示第一个帖子标题而不是页面标题

将满足条件的第一个不等式与1个条件匹配并获得列标题

将第一个值作为第二列标题将复杂列表转换为数据框表

我的第一个小部件的标题的行为就像一个链接

如何将bash窗口标题设置为运行的最后一个命令?

Oracle SQL:如何将列标题的第一个字符而不是值大写?

将groupby的第一个值设置为Nan

JavaScript无法将焦点设置为ul中的第一个li元素

将第一个值设置为Javascript数组中的键

Angular 5-Observable-将Observable的第一个值设置为表单组

无法将CurrentCell焦点设置为DataGridView中的第一个可编辑列

Rails选择选项-将第一个选项设置为禁用,选中

如何将DOM元素设置为第一个孩子?

golang反射将结构的第一个值设置为其零值

将样式设置为仅使用* ngFor创建的第一个元素

将控制器属性设置为第一个模型

聚合日志将第一个时间戳设置为@timestamp

PHP:通过do / while循环将第一个元素设置为活动状态

将第一个值设置为DropDownMenu C#的NULL值

如何将第一个选项设置为空?

Laravel将第一个Bootstrap横幅设置为Active

将第一个文件夹设置为可变批处理文件