使用 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 文件的代码:
{\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 中声明必要的 header 信息或其他内容。
提前致谢!
最佳答案
将您的输出包装在序言和右大括号中。像这样:
{\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}
}
更新
我是否缺少“包装器”配置设置?
是的,根据 the gem readme .
If you are trying to generate a standalone file with full file headers rather than just a marked up fragment, remember to pass the :standalone option so the correct header and footer are added.
缺少嵌套列表怎么办?
根据 PanDoc documentation ,您的源文本还缺少 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)
关于ruby - 使用 Ruby 和 Pandoc 将 Markdown 文本转换为 RTF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792458/