makeDOCXなどの関連コマンド

2019年11月26日(火)

[当サイトで紹介しているコマンド]

markdown記法によるWord文書などの作成で紹介している
makeDOCXなどは、pandocを用いて docx, html, pptx のファイルを
生成しやすくするための支援ツールです。

 ここでは、それらコマンドに関連する usePandoc, copyTable, ExportPDF および
AddHeadingID について説明します。

 いずれのコマンドも、処理が終了すると log.txt に処理の結果報告を書き出します。

    

1. usePandoc について

 usePandoc.vbs は、makeDOCX, makeHTML,makePPTX を統合したコマンドです。

 usePandoc.vbs を実行してからファイル名を入力すると
「選択」のダイアログが出ます。

 最初は DOCX が選択された状態で「はい、いいえ」のボタンが出ます。

 「はい」(yキーまたはエンターキー)を選ぶと DOCX の出力処理に移ります。

 「いいえ」(nキー)なら、次の候補 HTML に変わります。

 再度「いいえ」を選ぶと、次の PPTX に移ります。

 「いいえ」を押し続けるとトグル式に候補が変わります。

 「選択」の場面で 7秒間なにも入力しないと
自動的に出力処理に移ります。

    

2. Word, PowerPointの表をExcelにコピー(copyTable)

 copyTable.vbs というコマンドもあります。

 Word, PowerPointの表をExcelにコピーするものです。

 Wordの場合、表の表題(table caption)があればそれもコピーします。

 PowerPointの場合は、表と同じスライド内のTextBoxのテキストを表の前にコピーします。

 処理したいファイル名の指定方法は、makeDOCXと同じです。

 test.docx を処理した場合、test.docx.xlsx というExcelファイルが生成されます。

 ただし、そのExcelファイルは、XLSXというサブフォルダの中に生成されます。

 表が複数ある場合は、空白の行を2行おいてから次の表を書き出します。どの表も一つのワークシートにコピーされます。

 セル内の文字配置、罫線がそのまま維持されます。

 ただ、均等割り付けが Excelでは両端揃えになるようです。

 コピーはクリップボードを介して行われます。

 画面読み上げソフトを使っていると、表の確認は Wordよりも Excelの方がずっとやりやすいのでこのコマンドを作ってみました。

    

3. Excel, Word, PowerPointのファイルをPDFとして出力(ExportPDF)

 ExportPDF.vbs というコマンドもあります。

 Excel, Word, PowerPointのファイルをPDFとして書き出すものです。

 処理したいファイル名の指定方法は、makeDOCXと同じです。

 test.docx を処理した場合、test.docx.pdf というPDFファイルが生成されます。

 ただし、そのPDFファイルは、PDFというサブフォルダの中に生成されます。

    

4. AddHeadingIDについて

 AddHeadingID.vbs は、markdownの見出しに ID属性を機械的に付加します。

 なぜそのようなコマンドを作ったのかなどを含めて解説を記します。

(1) AddHeadingIDの目的

 pandocで markdown → html の変換を行う場合、
見出しに付けられるIDのことが少し気になります。

# 更新情報

 上の見出しの記述が pandocでは下の html記述に変換されます。

<h1 ID="更新情報">更新情報</h1>

 要するに ID属性がマルチバイト文字になります。

 最近のブラウザではマルチバイト文字でも問題なさそうですが、
半角英数文字の方が無難といえます。

# 更新情報 {#update}

 上のmarkdown記述であれば ID属性が update になります。

 しかし、すべての見出しに手作業でこうしたID属性を付加するのは面倒です。

 そこで、AddHeadingID.vbs をつくりました。

(2) AddHeadingIDにより付加されるID

 ID属性の記述がない見出しに、機械的にIDを付加します。

 {#session-ex1} のような記述を付け加えます。

 見出しのレベルに関係なく、見出しの出現順に通し番号を割り当てます。

 ただし、次の二つのケースでは ID属性を付加しません。

 なお、属性の記述の {-}{#session-ex1 .unnumbered} のようになります。

(3) gawkのダウンロード

 AddHeadingIDを動かすためには gawk.exe が必要です。

gawk-mbcs-win32-20051223.zip をダウンロードした後で解凍し、
そこに含まれている gawk.exe を AddHeadingID.vbs と同じフォルダにコピーします。

 あるいは、gawk.exe をパスの通ったフォルダにコピーするのでもかまいません。

 gawkを使わず VBScriptだけで処理することも可能ですが、
試したところ、なぜか かなり処理時間がかかります。

 そこで、gawkを使うことにしました。

(4) AddHeadingIDの起動とファイル操作

 AddHeadID.vbs を実行すると、ファイル名を入力する場面になります。

 そこで test.txt と入力してエンターキーをたたくと、
処理が開始されて test+ID.txt というファイルが書き出されます。

 ただし、test.txt の中に見出しの記述がない場合、
または、どの見出しにも既に ID属性が付けられている場合は
test+ID.txt を書き出しません。

 要するに、「書き出す必要がなければ書き出さない」というわけです。

 ファイル名を入力するところではワイルドカードを使うことができます。

 なお、AddHeadingID.vbs をコマンドラインで起動するときは

AddHeadingID test.txt  [enter]

 上のように引数を一つだけ指定します。

(5) awkスクリプト

 awkのスクリプトは、AddHeadingID.vbs と同じフォルダ内に書き出されます。

 AddHeadingID.awk というファイルです。

 このファイルが既にあると、改めて書き出すことはしません。

 必要なら AddHeadingID.awk を自分なりに書き換えてください。

 gawk.exe を実行するときのコマンドラインは下のとおり。

gawk -f AddHeadingID.awk test.txt test+ID.txt  [enter]

 第1引数が処理するファイル、第2引数は出力先ファイルです。

(6) makeHTML, usePandoc とのつながり

 makeHTML または usePandoc を実行してhtmlファイルを生成する場合、
AddHeadingIDが暗黙のうちに呼び出されます。

 それによりID属性を付加したときは、その旨が log.txt に書き出されます。

 test+ID.txt のようなIDを付加したファイルは、処理後に削除されます。

 IDを付加したファイルを保存しておきたい場合は
AddHeadingID を実行してください。

~ 以上 ~