- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我尝试实现 CSS Generated Content for Paged Media Module 中定义的脚注.
根据这个定义,脚注必须是内联的 span
。我写了一个 pandoc
lua
过滤器的初稿。
这是我的第一个 pandoc 过滤器(也是我第一次在 lua
中编码)。
这是过滤器:
Note = function (elem)
local textContent = {}
local content = elem.content
for i = 1, #content do
textContent[2*i-1] = pandoc.Str(pandoc.utils.stringify(content[i]))
if i < #content
then
textContent[2*i] = pandoc.LineBreak()
end
end
return pandoc.Span(textContent, pandoc.Attr("", {"footnote"}, {}))
end
它适用于带有未格式化文本的脚注(由于使用 stringify()
函数,格式会丢失):简单脚注和多 block 脚注可以很好地呈现。
为了保留格式,我尝试在 Note
元素的 content
上使用 walk_block()
函数,但我不能获得任何结果。
我遇到了第二个问题:stringify()
函数为 CodeBlock
元素返回一个空字符串。
因此,当我在以下 markdown
文本上使用此过滤器时:
Here is a footnote reference,[^1] and another.[^longnote]
[^1]: Here is the footnote.
[^longnote]: Here's one with multiple blocks.
Subsequent paragraphs are indented to show that they
belong to the previous footnote.
{ some.code }
The whole paragraph can be indented, or just the first
line. In this way, multi-paragraph footnotes work like
multi-paragraph list items.
This paragraph won't be part of the note, because it
isn't indented.
我获得以下 HTML 片段:
<p>
Here is a footnote reference,
<span class="footnote">Here is the footnote.</span>
and another.
<span class="footnote">Here’s one with multiple blocks.
<br />
Subsequent paragraphs are indented to show that they belong to the previous footnote.
<br />
<br />
The whole paragraph can be indented, or just the first line. In this way, multi-paragraph footnotes work like multi-paragraph list items.
</span>
</p>
<p>This paragraph won’t be part of the note, because it isn’t indented.</p>
代码块丢失。有没有办法同时保留脚注的格式和代码块?
最佳答案
我找到了如何处理 Note
元素。
首先,Note
元素是一个内联元素,所以我们可以使用walk_inline
。奇怪的是,Note
元素可以嵌入 block 元素,例如 Para
或 CodeBlock
。
下面的过滤器只处理Para
和CodeBlock
元素。保留格式。
因为 Para
元素是内联元素的列表,所以很明显可以在 Span
元素中重用这些元素。CodeBlock
文本也可以在内联 Code
元素中处理。
local List = require 'pandoc.List'
Note = function (elem)
local inlineElems = List:new{} -- where we store all Inline elements of the footnote
-- Note is an inline element, so we have to use walk_inline
pandoc.walk_inline(elem, {
-- Para is a list of Inline elements, so we can concatenate to inlineElems
Para = function(el)
inlineElems:extend(el.content)
inlineElems:extend(List:new{pandoc.LineBreak()})
end,
-- CodeBlock is a block element. We have to store its text content in an inline Code element
CodeBlock = function(el)
inlineElems:extend(List:new{pandoc.Code(el.text, el.attr), pandoc.LineBreak()})
end
})
table.remove(inlineElems) -- remove the extra LineBreak
return pandoc.Span(inlineElems, pandoc.Attr("", {"footnote"}, {}))
end
如果 Note
元素嵌入其他类型的 block 元素(如 BulletList
或 Table
),则必须开发一个特定的过滤器对于 walk_inline
函数。
关于html - Pandoc lua 过滤器 : How to preserve footnotes' formatting?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51548827/
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我对谷歌脚本(和javascript)非常陌生,我正在尝试编写一个脚本来修改文档中脚注的字体大小。不幸的是,我能找到的关于与文档中的脚注交互的指导非常少。 到目前为止,我已尝试从 this 开始工作基
好的,我知道这已经讨论过 here但没有提供明确的答复。我经常需要将 XML 文件导入 InDesign,其中包括许多脚注。当然,在这种情况下,InD 无法自动使用标签。除了所有脚注都失去了样式之外,
我有一个使用可编辑 div 的网站,以便用户可以修改或注释文本。有没有办法让网站生成 pdf 或一些带有脚注的可打印文档,这样如果用户有这个: This is the body text
我希望能够在引用脚注的地方创作脚注,但只在文档末尾显示,其中 .. rubric: Footnotes出现。 像这样: Lorem Ipsum[#lorem]_ dolor sit blah blah
我可以控制 add.to.row命令 xtable放置 \footnote{}在 LaTeX表输出标题? 这就是我已经得到的程度。 (我想找到使用 xtable 而不是“Hmisc”的解决方案) re
我正在将 kableExtra 库与 R Markdown 结合使用,我想向行标签(以及其他单元格的辅助标签)添加脚注。我怎样才能做到这一点 ? 下面的数据示例: library(kableExtra
我尝试实现 CSS Generated Content for Paged Media Module 中定义的脚注. 根据这个定义,脚注必须是内联的 span。我写了一个 pandoc lua 过滤器
C++ 模板 - 完整指南第 2 版在第 436 页有以下脚注(我的粗体): Except that decltype(call-expression) does not require a nonr
我最近转而在 Github Pages 上使用 Jekyll 来处理我的各种博客,并且喜欢我可以将 Markdown 推送到 Github,然后由他们来处理处理。我想继续以这种方式使用它(而不是在本地
我从这个论坛学到了很多东西,提前致谢。基本上,我试图为多个表的数据库查询的结果做“脚注”。我的表格具有几种生物 Material 中每种生物 Material 的“引用书目”,但我无法以更具可读性的方
有没有办法让rails-footnotes gem 在 Linux 上的 Rails 3 和 SublimeText2 编辑器上运行? 好像只针对 MacOS 运行 提前致谢 桑蒂! =) 最佳答案
我是一名优秀的程序员,十分优秀!