我有一些高质量的ePub,我想把它们做成markdown 版,用在黑曜石上.我发现Pandoc和我简单的转换try ,其中包括丢失斜体和传递Calibre span标签,它们在黑曜石中不显示为斜体.

如果我关闭raw_html扩展,它不会传递所有span个标签,但我也不会得到任何斜体.我想做的是转换html:

<span class="italic">Some Words</span>

在我最后的markdown 文件中转换成斜体文本.如果潘多克能做到这一点,那就太好了.否则,在将html传递到Pandoc之前,我会try 转换html,但是Calibre生成的span个标记中有很多都是堆叠在几层深的地方,所以一个非常简单的解决方案将非常好.

Pandoc是直接处理这个问题,还是我需要先处理html?我不只是关心斜体字,还有一系列其他格式问题,使用variouos Calibre span标记,可能更简单,比如粗体和一些标题.所以我正试图找到一种方法来应对所有这些问题.

推荐答案

Pandoc不解析CSS,因此无法知道是否应该将其转换为斜体.一个好的解决方案是使用Lua filter修改pandoc的内部文档表示.

function Span (span)
  if span.classes:includes 'italic' then
    return pandoc.Emph(span.content)
  end
end

这个过滤器判断span是否有类italic,如果有,则将其转换为emphasized text,通常以斜体输出.通过将过滤器保存到文件并通过--lua-filter命令行选项将该文件传递给pandoc来使用过滤器.

你可能想处理更多的课程;你可能想使用的其他pandoc构造函数是pandoc.Strongpandoc.Underlineetc..使用--to=native运行pandoc,查看pandoc如何在内部表示文档.

Html相关问答推荐

我的表的第一列似乎是推其他2列到右边,我不能改变它

创建具有圆锥渐变的水平CSS聚光灯

如何从ThymeLeaf模板中分离CSS

输入表单在奇怪的地方舍入的标签

Angular Project中的星级 Select

带有多种 colored颜色 的HTML按钮

react :事件和转发器在特定代码段中不起作用

带有MathJax SVG的HTML代码在XHTML中不起作用

粘滞的导航栏延伸到超过页边距的右侧

如何翻转卡片图像的背面

carousel 的垂直滚动按钮居中

如何解决水平塌陷问题?

如何在 Bootstrap 5 中将两个导航栏元素放在末尾?

为什么我的图像在悬停时与固定顶部栏重叠?

为 HTML5 文本字段设置最后六位正则表达式模式

两个span,一个在div居中,好像没有另一个,另一个在右边

如何根据行中的其中一列将行居中?

右对齐 bootstrap 导航项而不是下拉菜单

CSS:如何在模糊的背景上剪切文本?

如何让我的页脚背景跨越整个视口?