加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua – Pandoc编号的示例列表不适用于自定义编写器

发布时间:2020-12-14 21:43:38 所属栏目:大数据 来源:网络整理
导读:Pandoc在整个文档中为连续编号列表提供了惊人的扩展example_lists.我们尝试使用自定义编写器生成html,但结果html中的编号被打破.考虑以下md代码: (@) item 1(@) item 2## header ##(@) item 3 Pandoc默认生成以下html页面: 1. item 12. item 2 header3. it
Pandoc在整个文档中为连续编号列表提供了惊人的扩展example_lists.我们尝试使用自定义编写器生成html,但结果html中的编号被打破.考虑以下md代码:

(@) item 1
(@) item 2

## header ##

(@) item 3

Pandoc默认生成以下html页面:

1. item 1
2. item 2
  header
3. item 3

但是使用自定义编写器(我们用pandoc –print-default-data-file sample.lua作为例子)它产生:

1. item 1
2. item 2
  header
1. item 3

示例lua-writer包含以下用于有序列表处理的代码:

function OrderedList(items)
  local buffer = {}
  for _,item in pairs(items) do
    table.insert(buffer,"<li>" .. item .. "</li>")
  end
  return "<ol>n" .. table.concat(buffer,"n") .. "n</ol>"
end

如果为items表中的第一个元素添加打印

function OrderedList(items)
  local buffer = {}
  for elem,item in pairs(items) do
    print(elem)
    table.insert(buffer,"n") .. "n</ol>"
end

我们只会看到最终列表项的数字:

1
2
1

所以我认为这个问题不在作家本身.你有什么想法如何解决这个问题?

解决方法

通过 pandoc sources查看自定义编写器( src/Text/Pandoc/Writers/Custom.hs),您可能会发现OrderedList函数实际上有四个参数,其中第三个是列表样式.您应该对示例列表样式感兴趣.因此,您可以相应地更新OrderedList实现:引入全局变量来计算Example-list中的总项目,根据列表样式更改函数代码(在示例列表的ol html标记中添加start属性).

-- for counting examples (@)
local ExampleIdx = 1

function OrderedList(items,num,sty,delim)
  local buffer = {}
  for _,"<li>" .. item .. "</li>")
  end
  local start = ""
  if sty == "Example" then
    if ExampleIdx > 1 then
      start = ' start="' .. ExampleIdx .. '" '
    end
    ExampleIdx = ExampleIdx + table.getn(items)
  end
  return '<ol' .. start .. '>n' .. table.concat(buffer,"n") .. "n</ol>"
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读