有没有办法在pandoc中使用'pandocfilters'包(https://github.com/jgm/pandocfilters/tree/master/examples)加粗文本?
作为一个最小的工作示例,假设我有一个markdown文件('foo.md'):
foobar.
我想把'filter.py'写成类似
的东西from pandocfilters import toJSONFilter, Str,Emph
def boldify(key, val, fmt, meta):
if key == 'Str' and "foo" in val:
# this is the part I can't don't know how to do
# I would like to make the value be bold
return [Emph(val)]
if __name__ == '__main__':
toJSONFilter(boldify)
所以我们运行整个事情
pandoc 'foo.md' --filter='filter.py' -o 'foo.docx'
使用此,我收到以下错误:
pandoc: Error in $.blocks[0].c[0].c: expected [a], encountered String
CallStack (from HasCallStack):
error, called at pandoc.hs:144:42 in main:Main
任何帮助都将不胜感激。
答案 0 :(得分:0)
我找到了答案,我会发布我发现的内容(以及我如何发现它)以期帮助其他人。
强(或粗体)元素需要一个Str元素列表作为其工作的输入
我们应该更改filter.py以返回
RewriteEngine On
# Canonical redirect (in case the old URLs are indexed)
RewriteCond %{QUERY_STRING} ^id=(\d+)&title=([^/.&]+)
RewriteRule ^(longterm/home)/test\.php$ /$1/%1/%2? [R,L]
# Rewrite "pretty" URL to filesytem URL
RewriteRule ^(longterm/home)/(\d+)/([^/.]+)$ /$1/test.php?id=$2&title=$3 [L]
而不是
[Strong([Str(val)])]
或
[Strong(val)]
如果我们改变" foo.md"到:
[Strong(Str(val))]
通过以下方式获取抽象语法树:
**(foo)** bar
我们得到了
pandoc -t json -s foo.md
特别是,位:
{" T":"斯特朗"" C":[{" T":"海峡" " C":"(富)"}]}
告诉我们获得工作AST所需的格式。