web-dev-qa-db-ja.com

複雑なテンプレートを含むdocxへのマークダウン

Pandocを使用してMarkdownファイルをDOCXファイルに変換するようにビルドを自動化しました。最終文書のスタイル設定に参照文書を使用しました。私が使用するコマンドは次のとおりです。

pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx

reference.docxdocs/renderingからPandocによって取得され、Pandocは参照ドキュメントと同じスタイルでmydoc.docxをレンダリングします。

ただし、reference.docxには単なるスタイル以上のものが含まれています。コーポレートロゴ、プリアンブルなどが含まれています。

reference.docxのスタイルとコンテンツの両方でMarkdownコンテンツのマージを自動化するにはどうすればよいですか。私のソリューションはLinux上で動作する必要があります。

64
Synesso

更新

ユーザーChristian Longが提案したパイプバージョンを使用します。

pandoc -t latex mydoc.md | pandoc -f latex --data-dir=docs/rendering/ -o mydoc.docx

私はこれが来るのが遅いことを知っていますが、元の質問から3年後の人々がまだ解決策を探していると思います-私はそうでした。

私の解決策は、LaTeXをmarkdownとdocxの仲介として使用することでした(実際、org-modeから変換していましたが、同じ違いがありました)。だからあなたの場合、ワンライナーソリューションは次のようになると信じています:

pandoc -f markdown -t latex -o mydoc.tex mydoc.md && \
pandoc -f latex -t docx --data-dir=docs/rendering/ -o mydoc.docx mydoc.tex

これにより、目標に近づくことができます。もちろん、Pandocには、処理できる引数が約100ありますが、これをもっときれいにする方法はおそらくあります。また、最初に質問を投稿してからかなりの数の更新が行われました。

23

理想的には、カスタムdocxテンプレートを使用できますが、pandocはまだサポートしていません。 reference.docxファイルでは、新しく作成されたdocxファイルにのみカスタムスタイルを埋め込むことができます。

幸い、docxの代わりにodtを使用してこれを概算できます。 デフォルトのOpenDocumentテンプレート をかなり簡単に変更して、カスタムロゴ、プリアンブルなどを含めることができます。カスタムテンプレートをreference.odtファイルと組み合わせて使用​​して、すべてのスタイルとカスタムコンテンツを取得します。

Odt形式のファイルを作成したら、任意の数のコマンドラインツールを使用してodtからdocxに変換できます。たとえば、Linuxでは次を実行できます。

libreoffice --invisible --convert-to docx test.odt

またはOS Xの場合:

/Applications/LibreOffice.app/Contents/MacOS/soffice.bin --invisible --convert-to docx test.odt
12
Andrew

理想的には、PanDocはこの機能を拡張します ただし、可能性は低いようです いつでもすぐに。

私は仕事を直接行うツールについては知りませんが、おそらくマージにフォールバックする可能性がありますreference.docxおよびPanDocが作成したmydoc.docxコード。

.docx形式は、(ほとんど)XMLファイルのZipアーカイブです。最も重要なのはWord/document.xml。 XMLツールを使用して(ほとんどの)document.xmlあるファイルから別のファイルに挿入すると、必要なものに近いものが得られます。

例が役立つ場合は、Ruby)で例を一緒にハックできます。

11
RJHunter

更新:この機能は不完全です

いくつかの複雑なテンプレートで使用しましたが、フォント、会社のロゴなどに非常によくマッピングされていることがわかりました。しかし、.docx-> .docxの場合、見出しスタイルを章/セクションの区切りに手動で適用する必要がありました。フォントは正しいが、セクショニングは正しくありませんでした。次に.md-> .docxを試します。


ここで説明するように、この機能はPandocで利用できるようになりました。

複雑なテンプレートを含むdocxへのマークダウン

上記のリンクから:

pandoc  input --reference-docx=my-reference.docx -o out.docx

ここで、my-reference.docx(n.b. .dotxではありません)は次のいずれかになります。

  • 現在のフォルダーOR
  • --data-dirで定義されるフォルダーOR
  • であるdata-dirのシステムデフォルトフォルダー
    • UNIX系システムの$ HOME/.pandoc
    • C:\ Documents And Settings\USERNAME\Application Data\pandoc on Windows XPこれ以上使用しないでください
    • Windows Vista以降ではC:\ Users\USERNAME\AppData\Roaming\pandoc。
1
Jason