【问题标题】:Is it possible to enable global double spacing in pandoc for Markdown to RTF conversion?是否可以在 pandoc 中启用全局双倍行距以进行 Markdown 到 RTF 的转换?
【发布时间】:2014-07-15 07:22:00
【问题描述】:

我有一个非常简单的 markdown 文本文件,我可以使用以下命令行调用轻松地将其转换为 RTF:

pandoc foo.md -o foo.rtf -s

那里没什么特别的。当我将其转换为 PDF(通过 LaTeX)时,我知道我可以创建这样的模板

pandoc -D latex > mytemplate.txt

然后修改模板以包含

\usepackage{setspace}
\doublespacing

在序言中。

似乎在 RTF 中,双倍行距是每个段落的变量。我试图生成一个模板,如在 LaTeX 中,然后相应地修改它,但似乎没有办法启用全局双倍行距。此外,pandoc 中没有像 --reference-docx 和 --reference-odt 这样的选项,让我提供示例文档然后导入样式。

我还查看了 pandoc 中的 RTF writer 代码,发现代码中的段落间距似乎是固定的,虽然我不完全确定。

有人对如何解决这个问题有任何提示吗?还是我应该忘记 RTF 并转而使用 ODT 或 DOCX?

2014-05-28 更新:

根据 Oliver 的回复,我一直在查看文档,但仍有一些我看不清楚的地方。似乎在 RTF 格式的 Writer (Text.Pandoc.Writers.RTF) 中,段落的间距是通过创建两个分别具有正常间距和无间距的闭包(rtfPar 和 rtfCompact)来固定的:

-- | Default paragraph.
rtfPar :: Int       -- ^ block indent (in twips)
   -> Int       -- ^ first line indent (relative to block) (in twips)
   -> Alignment -- ^ alignment
   -> String    -- ^ string with content
   -> String
rtfPar = rtfParSpaced 180

-- | Compact paragraph (e.g. for compact list items).
rtfCompact ::  Int       -- ^ block indent (in twips)
       ->  Int       -- ^ first line indent (relative to block) (in twips)
       ->  Alignment -- ^ alignment
       ->  String    -- ^ string with content
       ->  String
rtfCompact = rtfParSpaced 0

然后,当遍历 JSON Pandoc 文档并访问 Para 块时,这些闭包按原样使用:

blockToRTF indent alignment (Para lst) =
  rtfPar indent 0 alignment $ inlineListToRTF lst

也许我遗漏了一些东西,但如果作者要忽略与间距相关的所有内容,我看不出如何使用过滤器来更改 JSON 表示,然后创建双倍行距段落。

【问题讨论】:

  • 无法访问我的盒子来查找我直到今天晚上使用的代码,但基本上你需要重写作者并自己进行转换,所以当段落处理程序获取它时它已经是 rtf .这不是很好,但有效。
  • 好的。这很好,因为这意味着我没有疯 ;)。我以为我错过了一些东西,但现在我发现我对必须修改编写器代码的第一印象是正确的。我会将您的答案标记为有效,尽管我认为出于我的目的,不值得覆盖作者。谢谢你,奥利弗。

标签: markdown rtf pandoc


【解决方案1】:

您应该可以通过添加过滤器来做到这一点。如果你知道 haskell,那么你可以直接扩展 pandoc,但如果不是,那么我建议使用 python 库 (here) - 创建一个修改 json 以插入每段双倍间距格式的 python 脚本在点击段落元素时。

然后您可以通过在 pandoc 调用中添加 -F ./myfilter.py 来调用它。

pandocfilters 的文档...稀疏,但是如果您查看示例和 pandocfilters.py 文件的末尾(用于选择您可以使用的类型),应该不会太难开始吧。

【讨论】:

  • 感谢您的想法。我一直在寻找文档,但仍然很困惑。我已经编辑了问题以描述我发现的内容。综上,我认为 RTF writer 的间距值是固定的。
猜你喜欢
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 2015-08-07
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-22
相关资源
最近更新 更多