我需要使用[pandocfilters]将这些Pandoc Haskell过滤器转换为Python。
user
#!/usr/bin/env runhaskell
import Text.Pandoc.JSON
main :: IO ()
main = toJSONFilter separator
where separator (Para [Span ("",[],[]) [Str "___separator___"]])
= RawBlock (Format "html") "<div class=\"separator\">***</div>"
separator x = x
我希望它会是一般形式
#!/usr/bin/env runhaskel
import Text.Pandoc.JSON
main :: IO ()
main = toJSONFilter separator
where separator (Para [Span ("",[],[]) [Str "___separator___"]])
= (Para [Span ("",[],[]) [Str "***"]])
separator x = x
如果有人知道如何添加&#34;居中&#34;格式化为docx格式的第二个过滤器。
在LaTeX中,我有一个#!/usr/bin/env python
from pandocfilters import toJSONFilter, Str
def separator(key, value, format, meta):
"""Need to write this."""
pass
if __name__ == '__main__':
toJSONFilter(separator)
宏,它使三个居中\separator{}
。当使用Pandoc处理html和docx时,我使用***
的备用宏定义来创建文本\separator{}
。然后我将___separator___
替换为以新格式正常工作的内容。出于跨系统兼容性原因,我需要从Haskell切换到Python过滤器。
___separator___
\documentclass{memoir}
\begin{document}
\newcommand{\separator}{\_\_\_separator\_\_\_}
First paragraph.
\separator{}
Second paragraph.
\end{document}
<p>First paragraph.</p>
<p><span>___separator___</span></p>
<p>Second paragraph.</p>
docx过滤器最好使用<p>First paragraph.</p>
<div class="separator">***</div>
<p>Second paragraph.</p>
生成一个居中的段落。
答案 0 :(得分:3)
看看这个过滤器:
#!/usr/bin/env python
import sys
from pandocfilters import toJSONFilter, Str, Para
def sep(key, value, format, meta):
if key == 'Para':
sys.stderr.write("--- Found a Para with value: " + str(value) + "\n")
if len(value) == 1:
if value[0]['t'] == 'Str' and value[0]['c'] == '---separator---':
return Para( [ Str("FOUND A SEPARATOR") ] )
return None
if __name__ == "__main__":
toJSONFilter(sep)
给出此输入降价时:
This is a paragraph.
---separator---
This is another paragraph.
---separator---
它将通过pandoc --filter ... input.md -o output.html
生成此输出HTML:
<p>This is a paragraph.</p>
<p>FOUND A SEPARATOR</p>
<p>This is another paragraph.</p>
<p>FOUND A SEPARATOR</p>
它还会向stderr打印Para节点的结构,以便您可以准确地看到它们的外观。
答案 1 :(得分:0)
case
#!/usr/bin/env python
from pandocfilters import toJSONFilter, Str, Para, RawBlock
def separator(key, value, format, meta):
if key == 'Para':
if len(value) == 1:
try:
if value[0]['c'][1][0]['c'] == '___separator___':
return RawBlock('html', '<div class="separator">***</div>')
except KeyError:
return None
return Nonepprint
if __name__ == '__main__':
toJSONFilter(separator)
请注意,这并不是#!/usr/bin/env python
from pandocfilters import toJSONFilter, Str, Para, RawBlock
def separator(key, value, format, meta):
if key == 'Para':
if len(value) == 1:
try:
if value[0]['c'][1][0]['c'] == '___separator___':
return Para([Str('***')])
except KeyError:
return None
return None
if __name__ == '__main__':
toJSONFilter(separator)
的中心,因为我似乎无法解决如何注入格式。