概要
年度末にあたり、普段は縁がない Microsoft Word for Mac で報告書や業務マニュアルを作ってみて、いろいろと苦労しました。
その一環として text wrapping break について深堀りしてしまったので、その正体と付き合いかたについて説明したいと思います。
Text wrapping break
Microsoft Word の text wrapping break というものをご存知でしょうか。これは表や図に対するテキストの回り込みを終わらせて、新しい行を始めたいときに使う改行のことです。 CSS の clear: both;
と同じ目的で使うもの、というとわかりやすいかもしれません。
表を使ったレイアウトに頼らないまともな業務マニュアルを作ろうとすると、スクリーンショット画像とその説明文の組を量産するために text wrapping break を使うことはよくあるのではと思います。
しかしながらこの text wrapping break は Word for Windows では普通にドキュメントに挿入できるのですが、 Word for Mac ではなぜか挿入する方法がありません。
Word for Windows (「文字列の折り返し」で挿入されるのが text wrapping break):
それでは Mac では text wrapping break は全く使えないのかというとそうではなく、 Windows で作った text wrapping break を含む Word ドキュメントを Mac で開くと普通に機能しますし、それを別の場所にコピペすることもできます。
Text wrapping break を使ったサンプル text-wrapping-breaks.docx を用意したのでダウンロードして確認してみてください。
OOXML の text wrapping break
Text wrapping break は Open Office XML の仕様 によると <w:br w:clear="all"/>
で表される改行のことのようです。
text-wrapping-breaks.docx を unzip して grep してみれば、これが文中で使われていることが実際に確認できます。
$ unzip text-wrapping-breaks.docx -d out
Archive: text-wrapping-breaks.docx
inflating: out/[Content_Types].xml
inflating: out/_rels/.rels
inflating: out/word/_rels/document.xml.rels
inflating: out/word/document.xml
extracting: out/word/media/image6.svg
extracting: out/word/media/image1.png
extracting: out/word/media/image2.svg
extracting: out/word/media/image3.png
inflating: out/word/theme/theme1.xml
extracting: out/word/media/image5.png
extracting: out/word/media/image4.svg
inflating: out/word/settings.xml
inflating: out/word/fontTable.xml
inflating: out/docProps/core.xml
inflating: out/docProps/app.xml
inflating: out/word/styles.xml
inflating: out/word/numbering.xml
inflating: out/word/webSettings.xml
$ xmllint --format out/word/document.xml | grep -B6 'clear="all"'
<w:t>たとえば、一致する表紙、ヘッダー、サイドバーを追加できます。</w:t>
</w:r>
<w:r w:rsidR="00FC2804">
<w:rPr>
<w:rFonts w:ascii="游明朝" w:eastAsia="游明朝" w:hAnsi="游明朝"/>
</w:rPr>
<w:br w:type="textWrapping" w:clear="all"/>
--
<w:t>テーマとスタイルを使って、文書全体の統一感を出すこともできます。</w:t>
</w:r>
<w:r>
<w:rPr>
<w:rFonts w:ascii="游明朝" w:eastAsia="游明朝" w:hAnsi="游明朝"/>
</w:rPr>
<w:br w:type="textWrapping" w:clear="all"/>
なお text-wrapping-breaks.docx を Google Docs や LibreOffice に持っていってみたところ、いずれも正しくレンダリングされませんでした。実はあまり使われていない機能なのかもしれません。
マクロで text wrapping break を挿入する
Text wrapping break の正体がわかったところで、ではなぜ Word for Mac ではこれが挿入できないんだろうと Microsoft のフォーラムで尋ねてみました。
結果としてその理由はわかりませんでしたが、代替手段として Word の VBA マクロを使って text wrapping break を挿入する方法を教えてもらいました。
Sub InsertTextWrappingBreak()
Dim oRange As Range
Set oRange = Selection.Range
With oRange
.Collapse Direction:=wdCollapseStart
.InsertBreak Type:=wdTextWrappingBreak
End With
End Sub
このマクロを登録するには Word のメニューより「ツール」→「マクロ」→「マクロ…」を選択します。マクロのダイアログが出ますので「マクロ名」に InsertTextWrappingBreak
と入力して「+」ボタンを押してください。
すると Visual Basic Editor が開きます。サブルーチン InsertTextWrappingBreak
のテンプレートがすでに入力されていますので、上記の Visual Basic コードで置き換えて、保存ボタン を押して保存してください。
再度マクロのダイアログを開くと InsertTextWrappingBreak
が見えますので、これを選択して「実行」ボタンを押すと、ドキュメントのカーソル位置に text wrapping break を挿入することができます。
さらに、このマクロ実行をツールバーに登録することで text wrapping berak を挿入するボタンを作ることができます。Word メニューの「環境設定…」 → 「リボンとツールバー」 → 「クイックアクセスツールバー」を開き、左側の「コマンドの選択」で「マクロ」を選んで、さきほど登録した VBA マクロの名前を選択して左側から右側にコピーしてください。
するとクイックツールバーに謎の ○ アイコンが出現します。これをクリックするとカーソルの位置に text wrapping break を挿入することができます。
個人環境のカスタマイズとしては、これで十分なのではないかと思います。
まとめ
今回 Word で大量のスクリーンショット画像を含む業務マニュアルを作ってみましたが、スタイルや改ページを納得いくまで調整するのに思った以上に時間をとられてしまい、非常に疲れました。しかしながら VBA マクロによる機能拡張や Visual Basic Editor のような開発環境を知ることができたのはよい経験でした。
やはり Qiita や Discourse のような Markdown で、細かいレイアウトを気にせず気楽に書けるのがいちばんよいと思ったので、次回はそのようなドキュメント制作環境を整備して作ってみたいと思います。