繁体   English   中英

使用Ruby和Pandoc将Markdown文本转换为RTF?

[英]Convert Markdown text to RTF, using Ruby and Pandoc?

使用Ruby和Ruby-Pandoc。 看起来像一个很好的工具,如果我可以让它工作。

我想将一些Markdown文本(包含嵌入列表和其他幻想)转换为Rich Text。 这是我正在转换的文字:

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中没有说明必要的头信息。

提前致谢!

将您的输出包裹在prolog和右大括号中。 像这样:

{\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}
}

更新

我错过了“包装”配置设置吗?

是的,根据宝石自述文件

如果您尝试生成具有完整文件头而不仅仅是标记片段的独立文件,请记住传递: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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM