仕様書をword形式で書けとうるさい。無理やりテキストで通して来たけど、外注に出す文書でフォーマットを統一する必要があったので、mdからの変換をやってみることにした。
結論から書くと、あんまりうまくはいかなかったので、これ以下は読む必要はない。2回続くけどw
変換は、pandocが一般的と聞いている。Haskell製の汎用ドキュメント変換ツール。
Pandoc - About pandoc
https://pandoc.org/
OPMLの変換もできるのか、OmniOutlinerからの変換も行けそうね。
だいぶ古いけど、日本語ドキュメントもある。
Pandoc ユーザーズガイド 日本語版 - Japanese Pandoc User's Association
http://sky-y.github.io/site-pandoc-jp/users-guide/
インストールは、macOSでは、brewを使うのが標準のようだ。
Pandoc - Installing pandoc
https://pandoc.org/installing.html
インストールする。
$ brew install pandoc
==> Downloading https://homebrew.bintray.com/bottles/pandoc-2.9.2.1.high_sierra.
==> Downloading from https://akamai.bintray.com/0f/0fa6bfa3d880c8dcc41a469bd60ae
######################################################################## 100.0%
==> Pouring pandoc-2.9.2.1.high_sierra.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
==> Summary
🍺 /usr/local/Cellar/pandoc/2.9.2.1: 183 files, 102.9MB
pandocの引用パーサーも入れる場合は、こんな感じ。今回は入れなかった。
$ brew install pandoc-citeproc
バージョン情報を表示してみる。
$ pandoc --version
pandoc 2.9.2.1
Compiled with pandoc-types 1.20, texmath 0.12.0.1, skylighting 0.8.3.2
Default user data directory: /Users/kinneko/.local/share/pandoc or /Users/kinneko/.pandoc
Copyright (C) 2006-2020 John MacFarlane
Web: https://pandoc.org
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.
変換用のmdファイルを用意する。pandocで変換できるmd形式にはいくつかあるようだ。
markdown_strict ベーシックなMarkdown
markdown pandoc拡張のMarkdown
commonmark CommonMark Markdown
gfm GitHub-Flavored Markdown
markdown_mmd MultiMarkdown
markdown_phpextra PHP Markdown Extra
基本的なマークダウンでは、あんまり表現が多彩ではないので、pandoc拡張のMarkdownを使ってみることにする。
Pandoc - Pandoc User’s Guide
https://pandoc.org/MANUAL.html#pandocs-markdown
こんなmdファイルを用意してみた。
------------------------------------------------------------------------------
% タイトル
% 著者1; 著者2
% 日付
# ヘッダ1
本文ほにゃらら[^1]という脚注。
[^1]ヘッダ前には空行は必須
## ヘッダ1.1
記号付きリスト
* リスト1
* リスト2
インデントはスペース4つ
さらにインデント
### ヘッダ1.1.1
順序付きリスト
1. リスト1
2. リスト2
#### ヘッダ1.1.1.1
テーブルの前には空行必須。
+---------------+---------------+--------------------+
| なんとか | かんとか | だよね |
+:=============:+==============:+:===================+
| なんか | おなかが | - すいた |
+---------------+---------------+--------------------+
| とても | のどが | - かわいた |
+---------------+---------------+--------------------+
##### ヘッダ1.1.1.1.1
段落ほにゃらら
###### ヘッダ1.1.1.1.1.1
段落ほにゃらら
####### ヘッダ1.1.1.1.1.1.1
段落ほにゃらら
####### ヘッダ1.1.1.1.1.1.1.1
段落ほにゃらら
######## ヘッダ1.1.1.1.1.1.1.1.1
段落ほにゃらら
# ヘッダ2
強制改行は末尾にスペース2つ
改行されたかな?
最後には改行はいらない
------------------------------------------------------------------------------
変換する。一瞬で終わってしまった。
$ pandoc md_data.md -o word_format.docx
$ ls -lha word_format.docx
-rw-r--r-- 1 kinneko staff 10K 4 1 14:00 word_format.docx
SlackのWordプレビュー機能で見てみる。なんだこれ... 失敗。

エディタの設定で改行がCRだけになっている。改行設定をCR+LFにしないとダメかな。落とし穴っぽい。
改行コードを変更したらうまくいったようだ。同じくSlackのプレビューで見てみる。

表がうまくいっていない。


うーん、そのまま使うことはできないな...
指定の文書フォーマットを使いたい場合は、テンプレートを指定することができる。
作った文書のテンプレートを、Wordでテンプレート(.dotx)として保存する。ドキュメント¥Officeのカスタムテンプレート以下に保管される。
今回はめんどくさいので、MSの配布しているテンプレートの中から「ビジネス文書」をダウンロードして使ってみる。
ビジネス文書
https://templates.office.com/ja-jp/%e3%83%93%e3%82%b8%e3%83%8d%e3%82%b9%e6%96%87%e6%9b%b8-tm16392933

tf16392933.dotxがダウンロードされた。先程のサンプルmdにテンプレートを指定して変換してみる。
$ pandoc md_data.md --reference-doc=tf16392933.dotx -o word_format.docx
念の為、こんどはwordで開いてみた。
それを、PDFにして画像化してみたが、罫線が再現されていないな。縦棒とか寄せがおかしいが、word上では罫線は表示されている。
ダメな感じで使えない機能が多かったようだ。テーブルは崩壊。著者と日付は未定義のようだ。テンプレートで未定義のヘッダはそのまま表示されてしまうようだ。脚注とリストが展開されていない。
十分とは言えないがないよりはマシ... なのかなぁ...


期待したのと違って、だいぶ残念な結果だった。テンプレートとのあいだで、だいぶマッチングをしっかり設計しないとうまくいかないようだ。
pandocでmd/word変換、使う人があまりいないわけだw
これなら、docxをunzipして、word/document.xmlを直接変換するパーサーを作ったほうがよさそうな気がしてきてしまう。
オリジナル投稿:
mdファイルをword形式に変換する -1-|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/932644



