2016-09-19 9 views
1

私は.docxファイルから.mdファイルに変換するためにWindowsでpandocを使用しています。私が使用しているdocxからマークダウンに変換するときコンパクトリストを使用

フラグは次のとおりです。私は、出力値下げファイルを表示すると

pandoc --wrap none --to markdown_github --output fms.md "FMS.docx" 

、それは、各リスト項目を分離する改行を持っています。ドキュメントでは、これを以下のようなloose listと定義しています。

- one 

- two 

- three 

私は、下記のような出力のためにコンパクトリストを使用します。

- one 
- two 
- three 

コンパクトリストを出力するフラグがありますか?

もしそうでなければ、フィルターを使って目的の出力を得るにはどうすればよいですか?

+1

フラグはありませんが、pandocフィルタを使用して、リスト要素の 'Para'を' Plain'sに置き換えることができます。 – tarleb

+0

@tarlebありがとう!私はパンドックフィルターに精通していません。あなたは実装で答えを書くことができますか? – styfle

答えて

1

これを達成するためのフラグはありませんが、pandocのフィルタ機能を使用して簡単な解決策があります。内部的には、リスト項目はブロックのリストとして表されます。すべてのブロック項目がPlainブロックのみで構成される場合、リストはコンパクトです。すべてのアイテムが1つの段落のみで構成されている場合は、Para段落の場合)からPlainにアイテムブロックのタイプを変更すれば十分です。

下記のHaskellプログラムではこれだけです。安全なそれはフィルタとして使用して:pandoc -t markdown --filter the-filter.hs your-document.docx

import Text.Pandoc.JSON 

main = toJSONFilter compactifyList 

compactifyList :: Block -> Block 
compactifyList blk = case blk of 
    (BulletList items)   -> BulletList $ map compactifyItem items 
    (OrderedList attrbs items) -> OrderedList attrbs $ map compactifyItem items 
    _       -> blk 

compactifyItem :: [Block] -> [Block] 
compactifyItem [Para bs] = [Plain bs] 
compactifyItem item  = item 

同じでも、Haskellはオプションでない場合には、Pythonのフィルタを使用して可能です。詳細については、pandocのscriptingページを参照してください。

関連する問題