1

使用 Ruby 和 Ruby-Pandoc。似乎是一个不错的工具,如果我能让它工作的话。

我想将一些 Markdown 文本(带有嵌入式列表和其他花哨)转换为富文本。这是我正在转换的文本:

Title
===

This is a paragraph. Hallelujah.

Here comes a nested list.
---

* List item 1
  * List item 1.1
  * List item 1.2
* List item 2
  * List item 2.1

这是我的 Ruby 代码...

require 'pandoc-ruby'

input = File.read(test.md)
converter = PandocRuby.new(input, from: :markdown, to: :rtf)
puts converter.convert

...它(在将输出保存到文件后)生成一个除了标题之外没有任何内容的文档:

RTF 截图

这是 RTF 文件的代码:

{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 Title\par}
{\pard \ql \f0 \sa180 \li0 \fi0 This is a paragraph. Hallelujah.\par}
{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 Here comes a nested list.\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 1\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 1.1\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 1.2\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 2\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 2.1\sa180\par}

此外,即使它确实出现在我的 RTF 查看器(Mac TextEdit)中,RTF 代码似乎也失去了所有的列表嵌套。我不知道如何诊断这一点,无论我是否没有在 Ruby-Pandoc 中说明必要的标头信息或某些内容。

提前致谢!

4

1 回答 1

4

将您的输出包装在序言和右大括号中。像这样:

{\rtf1\ansi\deff0{\fonttbl{\f0 Times New Roman;}}
{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 Title\par}
{\pard \ql \f0 \sa180 \li0 \fi0 This is a paragraph. Hallelujah.\par}
{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 Here comes a nested list.\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 1\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 1.1\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 1.2\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 2\par}
{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab List item 2.1\sa180\par}
}

更新

我是否缺少“包装器”配置设置?

是的,根据gem 自述文件

如果您尝试生成具有完整文件头而不是标记片段的独立文件,请记住传递 :standalone 选项,以便添加正确的页眉和页脚。

缺少嵌套列表怎么办?

根据PanDoc 文档,您的源文本缺少 2 个缩进空格。

因此,将它们放在一起,这是完整的解决方案。

您的源文件:

Title
===

This is a paragraph. Hallelujah.

Here comes a nested list.
---

* List item 1
    * List item 1.1
    * List item 1.2
* List item 2
    * List item 2.1

转换代码:

require 'pandoc-ruby'
input = File.read('./test.md')
puts PandocRuby.markdown(input).to_rtf(:standalone)
于 2012-10-09T03:50:32.203 回答