Pandocを使用してMarkdownファイルをDOCXファイルに変換するようにビルドを自動化しました。最終文書のスタイル設定に参照文書を使用しました。私が使用するコマンドは次のとおりです。
pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx
reference.docx
はdocs/rendering
からPandocによって取得され、Pandocは参照ドキュメントと同じスタイルでmydoc.docx
をレンダリングします。
ただし、reference.docx
には単なるスタイル以上のものが含まれています。コーポレートロゴ、プリアンブルなどが含まれています。
reference.docx
のスタイルとコンテンツの両方でMarkdownコンテンツのマージを自動化するにはどうすればよいですか。私のソリューションはLinux上で動作する必要があります。
更新
ユーザー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ありますが、これをもっときれいにする方法はおそらくあります。また、最初に質問を投稿してからかなりの数の更新が行われました。
理想的には、カスタム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
理想的には、PanDocはこの機能を拡張します ただし、可能性は低いようです いつでもすぐに。
私は仕事を直接行うツールについては知りませんが、おそらくマージにフォールバックする可能性がありますreference.docx
およびPanDocが作成したmydoc.docx
コード。
.docx形式は、(ほとんど)XMLファイルのZipアーカイブです。最も重要なのはWord/document.xml
。 XMLツールを使用して(ほとんどの)document.xml
あるファイルから別のファイルに挿入すると、必要なものに近いものが得られます。
例が役立つ場合は、Ruby)で例を一緒にハックできます。
いくつかの複雑なテンプレートで使用しましたが、フォント、会社のロゴなどに非常によくマッピングされていることがわかりました。しかし、.docx-> .docxの場合、見出しスタイルを章/セクションの区切りに手動で適用する必要がありました。フォントは正しいが、セクショニングは正しくありませんでした。次に.md-> .docxを試します。
ここで説明するように、この機能はPandocで利用できるようになりました。
上記のリンクから:
pandoc input --reference-docx=my-reference.docx -o out.docx
ここで、my-reference.docx
(n.b. .dotx
ではありません)は次のいずれかになります。