月曜日連載! Microsoft Wordスタイル探索(48)段落先頭行のインデント、タブの基本

第45回で説明した右インデントと左インデントは用紙の余白を規準にして段落全体の開始位置と終了位置を変更(設定)する機能です。

月曜日連載! Microsoft Wordスタイル探索 (45)インデント機能の基本

それに対して、段落の最初の行だけの開始位置を変更するインデントが字下げインデントとぶら下げインデントです。

一行目(先頭行)インデントの設定

一行目(先頭行)インデントの設定

次の図は字下げインデントとぶら下げインデントをそれぞれ1文字に設定した段落の例です。

字下げインデント、ぶら下げインデントの設定例

字下げインデント、ぶら下げインデントの設定例

字下げインデントは段落の始まりを分かりやすくするために使います。日本語のレイアウトでは段落の先頭を1文字字下げするのが一般的ですが、活字方式では行頭に空白文字を1文字置きます。Wordの段落でこのようなレイアウトをするときは段落の先頭に空白文字を入力しないで、字下げインデントを使う方が、いろいろと好都合です。

タブ
インデントと類似の機能にタブがあります。タブは行の中にタブ位置を設定しておき、タブ文字(タブキーで入力する文字)から始まる文字列の始まりをタブ位置に設定する機能です。タブ位置は「タブとリーダー」ダイアログを使って「既定のタブ位置」の変更、または任意の位置にタブ位置を設定できます。

任意に設定したタブ位置はルーラーに表示されます。次の図は2文字の位置にタブを設定した例です。

任意の位置にタブをタブの設定

任意の位置にタブを設定

段落の先頭で「タブ」を入力(Tabキーを押下)すると段落の先頭が2文字目から始まります。これは先頭行インデントと似ていますね。

段落の先頭にタブを入力

段落の先頭にタブを入力

「Ctrl」キーと「T」キーで、2行目以降をタブ位置に揃えることができます。これはぶら下げインデントに似ています。

段落の先頭で字下げのタブを入力

段落の先頭でぶら下げのタブを入力

このようにタブ機能を使うと、一見、字下げインデント、ぶら下げインデントと似たようなレイアウト指定ができます。


【広告】
11月16日(火曜日)16時からの「ちょっと一息・アンテナハウスウェビナー」YouTubeのご案内。

Vol.1:Word文書をWebページにした例の紹介
Word文書を実際にWebページ(HTML)に変換した実例を紹介します。
Vol.2:Webページ構成要素別のWord編集例
Wordが持つ文書編集機能とWebページ作成時に必要となるHTMLタグがどのように対応しているかをご紹介します。
Vol.3:CSSによる、Webページのレイアウト
見栄えの良いWebページを作成するうえで必須のCSSについて、サンプルファイルを交えながら設定例をご紹介します。
Vol.4:Wordから上手にHTMLにする為の編集アドバイス
WordでWebページの原稿を作成するにあたり注意するべきポイントをご紹介します。


月曜日連載! Microsoft Wordスタイル探索
◆前回:(47)本文領域の幅が文字数×文字サイズの値に一致しないときの余りの調整を探索
シリーズ総目次


e-na伊那谷 旅便り 第83回 二年参りと伊那スキーリゾート

明けましておめでとうございます。
年末年始は如何お過ごしでしたでしょうか。

長野県では「二年参り」を行う風習があります。
「二年参り」は初詣の一種で大晦日の夜から年明けにかけての初詣のことを「二年参り」と呼んでいます。
この風習により、年明けカウントダウンを行うような時間帯では神社に人が集まることが多く、
最寄りの神社などでは二年参りの際に知人と出会うことも珍しくありません。

今年は感染症予防を加味して、アンテナハウス伊那支店が所在する南箕輪村の神社に時間を早めてお参りしてきました。
南箕輪村役場の横に位置する八幡宮です。

お宮へ続く道からライトアップされていて神秘的な景観でした。(参拝者がいなかったこともあり)

破魔矢をお焚き上げして頂き、新しい破魔矢と家族分のお守りを授かって帰りました。
お守りには今年も家族が健康で過ごせるよう願いが詰まっています。

年末年始は運動不足になりがちなので、伊那スキーリゾートにいってウィンタースポーツで運動不足の解消です。
正直なところ白馬のゲレンデなどと比べるとコースは少なく距離も短いのですが、伊那市内から20分かからずにいけることが大きなメリットです。
中央道伊那インターからも近いですよ。

年始にいきましたが人も多く皆さん今年の初滑りを楽しんでいました。

久しぶりにスキーに挑戦しましたが、滑り方を忘れていて一度転んだまま動けませんでした・・
慣れているスノーボードに切り替えて(お守りの効果もあってか)怪我もなく楽しむことができました。

以上、「二年参り」「伊那スキーリゾート」についてお送りしました。
本年もどうぞ宜しくお願い致します。


『Office Open XML Formats入門 第2版』を制作しました

2021年12月07日 16:00~17:00 に「ちょっと一息アンテナハウスウェビナー『Office Open XML Formats入門 第2版』制作報告」を発表しました。販売、公開よりも発表が先になってしまったため、内容が気になっていた方もいらっしゃるのではないでしょうか。

こちらが表紙画像です。

Amazon POD用表紙画像

2021年12月07日ウェビナーのバナー

組版をAH XSL Formatter V7.2で行ったため、『AH Formatter XML関連出版物の紹介』ページに掲載しています。

Amazonの販売ページへのリンクは次の通りです。

https://www.amazon.co.jp/gp/product/4900552836

また、本書のPDF版は弊社オンラインショップからご購入いただけます。印刷版とレイアウトの微調整を行いました。

https://web.antenna.co.jp/shop/html/products/detail.php?product_id=1301

HTML版はOffice Servers資料室のページからご覧いただけます。


ウェビナー概要や書籍紹介ページにある通り、アンテナハウス『Office Open XML Formats入門』の初版は2007年に出版社から刊行されました。
今年は2021年、つまり14年程前の書籍の改訂版ということになります。
内容的な修正は必要とはいえ、以前の版の原稿をベースに新たな版を制作するというとき、XML原稿はほとんど変更が必要ありません。以前の版の構造に不満がある場合はその限りではありませんが。

一方で大規模な修正の余地があるのがXSLTでした。そしてウェビナー(と書籍の後書き)では、XSLTについてはかなり省いて説明することになったため、本記事ともう一度どこかで補足することにしたいと思います。

2007年というのは、XSL的にもそこそこ大きな節目でした。XSLT 2.0のW3C勧告です。XSL 1.1の勧告は2006年でしたが、実利用として熟れていないという点では二者とも同様です。XSLT 2.0以降はミスの発見やスクリプトの見通しにおいてXSLT 1.0とは別言語に近い体験をもたらします。msxmlのXSLTが1.0であることや各ウェブブラウザほか処理系の多くが1.0までしか対応していないことも手伝って、使える状況が限られるのは悩ましいところです。

変更の概略

今回は自社事例でしたので、初版で1.0だったXSLTを3.0に書き換えました(完全に3.0向けに最適化したとはとても言えませんが)。

書籍初版の制作報告にもあったように、XSL 1.1での大きなポイントにbookmarkのとindex関係の語彙が入ったことが挙げられます。『Office Open XML Formats入門』初版では、bookmarkについてはXSL Formatterの拡張仕様、索引についてはbasic-linkとXSLTによる力技による解決が図られていました。

(AH )XSL Formatterの拡張仕様では実際のフローコンテンツ登場箇所と同一の箇所に記述するため、処理においてXML中の章構造に当たったときに同時に処理すれば良いことになります。よってXSLT記述としてはbookmark-tree用に処理を追加するよりも単純に書けます。XSLT 1.0で書く場合は複数回ドキュメントを走査することが難しいということも手伝っていたのかもしれません。

索引構造については、XSL 1.1のindexを導入することで、XSLTで行わなければならなかった処理が簡略化されます。索引語に当たったときの処理で、「既に同じ索引語が登場しているか」「同じ索引語が同ページに登場したときにページ数表示を合一する」といった判別がXSLのプロパティで変更可能になるため、分岐処理などが大幅に簡略化できました。

割とアドホックな書き換えを行っていたり、徹底できていなかったりするため、引き継ぎをするにはリファクタリングが必至ですが、大体このようなことを行いました。

  • テンプレート中に直接書き込まれたattributeをattribute-setへまとめる
  • 共通処理をまとめる。
  • apply-templatesを含まないような分岐は名前付きテンプレートへ追いだし、パラメータを渡すようにする
  • XPathによる値の取得はできるだけテンプレートの先頭でまとめ、利用箇所ではselect="$value"のように呼び出すだけにする

先に書いた通り徹底はできておらず、私自身も、テンプレート中で直接attributeを指定しているような箇所をかなり生み出してしまいました。とはいえ、ギリギリの時期に「ヘッダーの位置をもう少し下げて」といった指示に1行の変更だけで対応できるようにはできたので、無駄ではなかったと思います。

実は上に挙げたものはXSLT 1.0時点でも時間さえあれば行える変更で、3.0への変更には関係ありません。値のみを取得、操作したい箇所をfunction化したり、処理をreplace()関数に書き換えたりといった作業は2.0から行えます。3.0としては関数の括弧が入れ子ではなくarrowを使えたり、文字列結合に「||」を使えるといった枝葉の変更点を使用しています。

参考資料


月曜日連載! Microsoft Wordスタイル探索(47)本文領域の幅が文字数×文字サイズの値に一致しないときの余りの調整を探索

月曜日連載! Microsoft Wordスタイル探索の前々回(月(45)インデント機能の基本)と前回((46)余白についてー補足)では、本文領域の幅が文字数×文字サイズの値に一致しない、つまり余りがでるときの扱いについて、「一行の文字数を指定時に右のインデント幅を自動調整する」が、ONのとき、その余りはインデント量の調整として余白に追加されることを説明しました。

今回は、この余りの調整についてもう少し探索してみます。

文字の大きさと余りの大きさ
まず、余りの大きさは、段落の文字の大きさによって変わります。例えば、用紙サイズA4のとき用紙の幅は210mmです。仮に左右の余白を各30㎜とすると、本文領域の幅は210-(30+30)=150㎜となります。
例として段落の文字サイズを9ポイントから24ポイントまで変更して、それぞれの設定での余りの幅を計算してみると、次の表のようになります。

段落の文字サイズ(pt)

文字サイズ(mm)

文字数

本文領域に入る文字数

余り(mm)

9

3.175

47.24409449

47

0.775

10.5

3.70416667

40.49493813

40

1.833333

12

4.23333333

35.43307087

35

1.833333

16

5.64444444

26.57480315

26

3.244444

20

7.05555556

21.25984252

21

1.833333

24

8.46666667

17.71653543

17

6.066667

9ポイントのときの余りが一番小さく、12ポイント、16ポイント、24ポイントと余りが大きくなります。

9ポイントではON/OFFで一行の文字数が変わる
「一行の文字数を指定時に右のインデント幅を自動調整する」がON/OFFでのレイアウト変化を見ると、9ポイントのときONにすると一行の文字数がOFFの時よりも小さくなっています。

一行の文字数を指定時に右のインデント幅を自動調整するのON/OFFの変化

一行の文字数を指定時に右のインデント幅を自動調整するのON/OFFの変化

ONにするとインデント幅がOFFのときよりも広くなり、行末の1文字分が入らなくなっているためです。

両端揃えのとき
両端揃えでは、OFFの時は行末が余白の位置になり、ONの時は余白の位置よりも内側になります。

両端揃え: 一行の文字数を指定時に右のインデント幅を自動調整する」がOFFとON比較

両端揃え:一行の文字数を指定時に右のインデント幅を自動調整する」がOFFとON比較

なぜ、このようになるかを考えてみると、これを見るとインデント幅の調整量は、段落ごとの文字の大きさで計算した余りではなく、文書全体で同じ値が適用されるためのようです。


【広告】
11月16日(火曜日)16時からの「ちょっと一息・アンテナハウスウェビナー」YouTubeのご案内。

Vol.1:Word文書をWebページにした例の紹介
Word文書を実際にWebページ(HTML)に変換した実例を紹介します。
Vol.2:Webページ構成要素別のWord編集例
Wordが持つ文書編集機能とWebページ作成時に必要となるHTMLタグがどのように対応しているかをご紹介します。
Vol.3:CSSによる、Webページのレイアウト
見栄えの良いWebページを作成するうえで必須のCSSについて、サンプルファイルを交えながら設定例をご紹介します。
Vol.4:Wordから上手にHTMLにする為の編集アドバイス
WordでWebページの原稿を作成するにあたり注意するべきポイントをご紹介します。


月曜日連載! Microsoft Wordスタイル探索
◆前回:(46)余白についてー補足
◆次回:(48)段落先頭行のインデント、タブの基本
シリーズ総目次


XSL-FO 試行錯誤 カレンダーを自動生成したい(その月のマスの最初の日を取得する)

XSL-FO 試行錯誤 カレンダーを自動生成したい(構想編)の続きとなります。

大抵のカレンダーにおいて、ある月の表における最初の日付は「1日」ではありません。日曜始まりのカレンダーなら、「その月の1日が含まれる週の日曜日の日付」を取得する必要があります。このとき同様に「その月の最終日が含まれる週の土曜日」も考える必要がありますが、今回は割愛します。

XSLT 2.0からは日付関連の関数が使えるので、これを使っていくことにします。

<xsl:transform 
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:fn="http://www.w3.org/2005/xpath-functions"
 xmlns:fo="http://www.w3.org/1999/XSL/Format"
 xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0"
 xmlns:cal="urn:calendar"
 exclude-result-prefixes="xs fn">...</xsl:transform>

ルートはこんな感じです。foやaxfは今回登場しません。XSLT 2.0からは型の時点でエラーを検知したりといったことが可能なので、XMLSchemaの名前空間はかかせません。xpath-functionsの名前空間は宣言しなくとも使えますが、自作関数との区別用に明示しています。独自に実装する名前空間はcalというprefixを付けることにします(functionのnameには名前空間の明示が必要になります)。

 <xsl:function name="cal:getWeekDay" as="xs:integer">
   <xsl:param name="day" as="xs:date"/>
     <xsl:sequence select="$day => fn:format-date('[F]') => cal:weekDayInteger()"/>
 </xsl:function>

 <xsl:function name="cal:weekDayInteger" as="xs:integer">
   <xsl:param name="wd" as="xs:string"/>
   <xsl:choose>
     <xsl:when test="$wd eq 'sunday'">
       <xsl:sequence select="0"/> 
     </xsl:when>
     <xsl:when test="$wd eq 'monday'">
       <xsl:sequence select="1"/> 
     </xsl:when>
     ...
     <xsl:otherwise>     
       <xsl:message terminate="yes" select="'Invalid input'"/>
   </xsl:otherwise> 
 </xsl:choose>
 </xsl:function>

曜日を0-6のxs:integerで取得することにします。日付の曜日自体はfn:format-date(‘[F]’)で取得できますが、これをxs:integerに置き換えます。これは次回以降、moduloを使って日付の表を埋めていくためです。

「=>」はXSLT 3.0から使える記法で、処理の見た目がすっきりします。cal:weekDayIntegerについてはXSLT 3.0的にはmap{‘sunday’:0, …}のように曜日のstringと対応付ける整数をまとめて、それを展開する形がより望ましいかもしれません。2.0でも外部XMLや、xsl:chooseではなくXPathのifなどにまとめると記述量は減ります。xsl:otherwiseではmessage@terminate=”yes”で処理を強制終了していますが、ライブラリなどとして整備するなら分岐処理前にxsl:assertやxsl:tryなどで対応しておきたいところです。

  <xsl:function name="cal:getFirstDayOfTable" as="xs:date">
   <xsl:param name="firstDay" as="xs:date"/>
   <xsl:param name="weekStart" as="xs:integer"/>
     <xsl:variable name="weekDayOfFD" select="cal:getWeekDay($firstDay)"/>
     <xsl:choose>
       <xsl:when test="$weekDayOfFD eq $weekStart">
         <xsl:sequence select="$firstDay"/>
       </xsl:when>
       <xsl:otherwise>
         <xsl:variable name="dur" select="'P' || string(abs($weekDayOfFD - $weekStart)) || 'D'" as="xs:string"/>
         <xsl:sequence
           select="(xs:dateTime($firstDay) - xs:dayTimeDuration($dur)) =>xs:date()"/>
       </xsl:otherwise>
    </xsl:choose>
 </xsl:function>

その月の最初の日(xs:date)と、左端に来る曜日(xs:integer)を引数にして、初週の左端にくる曜日を取得します。

最初の日の曜日をvariableで持つことで、後で使用しやすくしています。この日が始まりの曜日と一緒なら後の計算はいらないので分岐させます。整数同士の比較です。

一緒でない場合、最初の日から曜日のギャップ分遡った日付を取得する必要があります。

最初の日をdateTimeにキャストし、そこにdayTimeDurationでギャップ分の日をマイナスし、それをxs:dateに戻します。

結果を確認してみましょう。2022年1月のカレンダーの表(日曜始まり)ならば、入力「2022-01-01」に対し「2021-12-26」が期待する結果となります。

<xsl:param name="dateArg" as="xs:date" />
 <xsl:template name="xsl:initial-template">
   <xsl:variable name="weekStart" select="0" as="xs:integer"/>
   <xsl:message>
     <xsl:sequence select="xs:date($dateArg) =>
       cal:getFirstDayOfTable($weekStart)"/>
   </xsl:message>
 </xsl:template>

XSLT 3.0では、ダミーのソースXMLファイルを用意しなくとも上のように「xsl:initial-template」という特殊な名前のテンプレートを使うなどして直接XSLTプログラムを走らせられます。グローバルのパラメータdateArgに入力した月始めのxs:dateを処理した結果を表示してくれます。

果たして私の環境では「2021-12-26」が出力されました。

考慮するケースが足りないかもしれません。無保証であることにくれぐれもご留意ください。

他、関数などに落としこめる事項としては年度の切り換えがあります。これは次回取り組みたいと思います。XSL-FOまでいきませんでした……。

関連記事

XSL-FO 試行錯誤 カレンダーを自動生成したい(構想編)

関連資料

XSL Transformations (XSLT) Version 3.0
W3C Recommendation 8 June 2017



月曜日連載! Microsoft Wordスタイル探索 (46)余白についてー補足

先週の、月曜日連載! Microsoft Wordスタイル探索 (45)インデント機能の基本で、余白について説明しました。

その中で、

本文段落の幅は、通常、文字数×本文文字の大きさになります。すると、用紙の幅から左右余白の大きさを差し引いた値が、文字の大きさの倍数になっていないとき、本文段落の幅とは一致しないで余りがでます。この差(余り)は右余白に追加されます。

と説明しました。しかし、もう少し詳しく調べてみると、この動作は段落の設定によります。

「段落」ダイアログに「一行の文字数を指定時に右のインデント幅を自動調整する」というチェックボックスがあります。

「段落」ダイアログ「一行の文字数を指定時に右のインデント幅を自動調整する」

「段落」ダイアログ「一行の文字数を指定時に右のインデント幅を自動調整する」

前回の説明はこのチェックボックスがONになっているときの動作になります。ONのときは余りが右インデントの値に追加されます。次の図は段落の右インデントがゼロのときの動作です。チェックボックスがONのときは、右インデントがゼロでも余白と本文の終端に空きがあることが分かります。OFFにすると余白と本文の終端の空きがなくなります。

文字数×文字間の値と本文領域の幅の余りの扱い

文字数×文字間の値と本文領域の幅の余りの扱い

なお、チェックボックスOFFで余りがあるときの動作は段落の揃え指定によります。次の図は、段落の揃え設定を「両端揃え」(一番上)、「左揃え」(二番目)、「中央揃え」(三番目)、「下揃え」(一番下)にしたときの余りの位置です。

段落の揃えにより、余りの分配が変化する

段落の揃えにより、余りの分配が変化する

段落の揃えが両端揃えのとき、余りは文字間に分配されます。左揃えでは余りは右余白に追加(右インデントの増加)、中央揃えでは余りは左右余白に配分、右揃えではあまりが左余白に追加(左インデントの増加)として扱われています。

なお、「一行の文字数を指定時に右のインデント幅を自動調整する」チェックONの時は、段落の揃えの設定に関わらず、余りは右インデントの増加として扱われます。


【広告】
11月16日(火曜日)16時からの「ちょっと一息・アンテナハウスウェビナー」YouTubeのご案内。

Vol.1:Word文書をWebページにした例の紹介
Word文書を実際にWebページ(HTML)に変換した実例を紹介します。
Vol.2:Webページ構成要素別のWord編集例
Wordが持つ文書編集機能とWebページ作成時に必要となるHTMLタグがどのように対応しているかをご紹介します。
Vol.3:CSSによる、Webページのレイアウト
見栄えの良いWebページを作成するうえで必須のCSSについて、サンプルファイルを交えながら設定例をご紹介します。
Vol.4:Wordから上手にHTMLにする為の編集アドバイス
WordでWebページの原稿を作成するにあたり注意するべきポイントをご紹介します。


月曜日連載! Microsoft Wordスタイル探索
◆前回:(45)インデント機能の基本
◆次回:(47)本文領域の幅が文字数×文字サイズの値に一致しないときの余りの調整を探索
シリーズ総目次


e-na伊那谷 旅便り 第82回 経ヶ岳

12月に入って雪が舞う日が増えてきました。
こちらは最近のアンテナハウス伊那支店の裏口からの景色になります。
木曽山脈(左・多分)や経ヶ岳(右)に雪が積もるようになりました。

そんな美しい経ヶ岳を見て思い出したので今回はこちらをご紹介します。

アンテナハウス伊那支店の所在地である南箕輪村の中学校で毎年行われている経ヶ岳強歩大会です。

南中伝統 経ヶ岳強歩大会 https://ina-dani.net/topics/detail/?id=44218

画像出典:南中伝統 経ヶ岳強歩大会 | ニュース | 伊那ねっと Copyright(C) 2021 InaCATV.

南箕輪中学校の全校生徒が大芝高原から一斉にスタートし、ゴールの経ヶ岳8合目を目指す伝統行事。
どこの学校でもマラソン大会などあったと思いますが、それに該当するものです。
コース全長8.3 km、ゴール地点は標高2035 m(スタート地点との標高差はおよそ1200 m)。
中学生の時によく完走できたなあ、若いっていいなあと感慨深くなります。
ゴールからの景色は未だに覚えています。

伊那谷ねっと「南箕輪中学校 距離短縮で強歩大会開催」
https://ina-dani.net/topics/detail/?id=58020

昨年は新型コロナで中止、今年は大泉所ダムで折り返しだったそうで、来年は再開しているといいですね。

この記事を読んで大人だけど興味が沸いて登ってみたいなあと感じた方、
そんな方にはコチラ、経ヶ岳バーティカルリミットをご紹介します。

経ヶ岳バーティカルリミット
http://www.nature-scene.net/kyogatake/

強歩大会とは異なり上るのは山頂まで、かつ折り返しするのでゴールはスタート地点。
標高差も大きくなり、コースも長くなり、完走以前に山頂までたどり着けるか心配になります。
昨年、今年は新型コロナで中止となっていたようで、こちらも来年は開催できることを期待しましょう。
私も今の体重から15kgくらい落とせてBMIも15を切れたらチャレンジしてみようと思います。


月曜日連載! Microsoft Wordスタイル探索 (45)インデント機能の基本

Wordのインデントは段落の右端あるいは左端の位置を変更します。また段落の先頭行のみの字下げ、あるいはその逆に先頭行のみを突き出し(2行目以降をぶら下げ)にする設定もできます。

Wordのインデントを増減するにはいろいろな指定の仕方があり、単位の設定なども関係していて複雑です。インデントを探索するにあたり、最初にインデントとは何かを簡単にまとめてみます。

余白
インデントは余白からの相対量になっているので、まず余白を説明します。余白は用紙の端から本文の文字入力領域までの間隔です。用紙の上下左右と行頭・行末の関連付けは横書きと縦書きで異なるので、以下は横書きを前提として説明します。
・上余白:用紙の上から本文の一番上の行までの空き
・下余白:本文の一番下の行と用紙の下端までの空き
・左余白:用紙の左端から本文の行頭位置までの空き
・右余白:用紙の右端から本文の行末位置までの空き
なお、Wordでは行や段落の前後には読みやすくするための空きが確保されるため、横書きでは用紙の上端と本文の一番上の行の上辺の間隔は余白と一致するとは限りません。つまり上余白を20mm確保したとしても、印刷したとき用紙の上端と文字の上端には20mmよりも大きな空きができることがあります。
また、本文段落の幅は、通常、文字数×本文文字の大きさになります。すると、用紙の幅から左右余白の大きさを差し引いた値が、文字の大きさの倍数になっていないとき、本文段落の幅とは一致しないで余りがでます。この差(余り)は右余白に追加されます。このため印刷すると見かけ上の右余白は指定した量よりも増えることになります。

上記の余りの扱いについては次回の補足も参照してください。月曜日連載! Microsoft Wordスタイル探索 (46)余白についてー補足

インデント
インデントは段落単位で、余白を規準にして行頭と行末の位置を増やしたり減らしたりする機能です。インデントをプラスにすると余白が広がり、マイナスにすると余白が狭くなります。横書きでは左インデントで行頭の位置を指定します。次の段落(1)は左インデントをプラス1文字、(2)は左インデントをマイナス1文字に設定した例です。

段落の左インデントを1文字増やしたり減らしたり設定

段落の左インデントを1文字増やしたり減らしたり設定


次の段落(3)は右インデントをプラス1文字、(4)は右インデントをマイナス1文字に設定した例です。
段落の右インデントを1文字増やしたり減らしたり設定

段落の右インデントを1文字増やしたり減らしたり設定


インデントの設定
インデント機能はリボン「ホーム」の「段落」ダイアログから設定できます。
段落ダイアログのインデント設定

段落ダイアログのインデント設定


リボン「レイアウト」の段落グループでも左右のインデントを設定できます。
リボン「レイアウト」のインデント設定

リボン「レイアウト」のインデント設定


リボン「ホーム」には他に「インデントを増やす」、「インデントを減らす」コマンドがあります。
インデントを増やす、インデントを減らす

インデントを増やす、インデントを減らす


また、インデントマーカーをマウスでドラッグしてインデントを設定する方法もあります。
インデントマーカー

インデントマーカー


これだけでも結構多いと思いますが、どうやら他にもまだあるようです。指定方法が多様なのは便利なのか分かりにくいのか、少しばかり疑問です。次回はもう少し深く追求してみたいと思います。


【広告】
11月16日(火曜日)16時からの「ちょっと一息・アンテナハウスウェビナー」YouTubeのご案内。

Vol.1:Word文書をWebページにした例の紹介
Word文書を実際にWebページ(HTML)に変換した実例を紹介します。
Vol.2:Webページ構成要素別のWord編集例
Wordが持つ文書編集機能とWebページ作成時に必要となるHTMLタグがどのように対応しているかをご紹介します。
Vol.3:CSSによる、Webページのレイアウト
見栄えの良いWebページを作成するうえで必須のCSSについて、サンプルファイルを交えながら設定例をご紹介します。
Vol.4:Wordから上手にHTMLにする為の編集アドバイス
WordでWebページの原稿を作成するにあたり注意するべきポイントをご紹介します。


月曜日連載! Microsoft Wordスタイル探索
◆前回:(44)Word文書をHTMLに変換するHTML on Word V1.1で表のヘッダー行、ヘッダー列の変換機能などを追加
◆次回:(46)余白についてー補足
シリーズ総目次


書籍のHTML版の構造を考える(OOXML入門第2版)

12/07に「『Office Open XML Formats入門 第2版』制作報告」のウェビナーを行いました。ウェビナーで言及したように、『Office Open XML Formats入門 第2版』はHTML版も制作中です。

編集用XMLであるSimpleDoc(の改造版)はほぼHTMLの文法なので基本的にはそのままです。
とはいえ、そのままで出せるかというとそうでもなく、「表示媒体の違い」へ意識を向ける必要があります。本記事ではその辺りについて「こんなことを考えながら作っています」という話です。

形式

まず、HTMLとしてはHTML5、もといLiving Standardに合わせています。他社コンテンツを制作するような場合に比べれば更新の自由が利きますし、セマンティックな語彙が多い方が嬉しいですね。変換自体にはXSLT 3.0を利用しています。

スタイル設定

SCSSで大本を記述した後、CSSに変換したものをlinkの読み込み対象にしています。あるページ特有のスタイルというものは無かったため「_color.scss」「_header.scss」、「_footer.scss」これらを読み込む「common.scss」のようになっています。

ページ分割とナビゲーション

まずページ分割単位の決定。「最終的に1ページのHTMLファイルに収める」というのはそれなりの文量のある書籍では現実的ではありません(動的に内容を取得するのであればそういった方法もあるでしょう)。今回は「章単位でフォルダーを分け、節単位でファイルを分ける」ということにしました。
余談として、DITAではDITA-OT標準のHTML出力を行うとトピックごとにページが分けられます。書籍の形態を重視する場合はこのトピック単位というのは個人的にはやや扱いづらいものであったりします。

ナビゲーションの追加について。特に静的なページとして用意する場合、次の箇所へ遷移する方法の確保は重要です。HTML版用に新たに考えるべき項目としては「常に目次をページ内に配置する」「前後の箇所へのリンクを配置する」「検索用のページを用意する」といったことが挙げられます。

「常に目次をページ内に配置する」については「目次へのリンクを各ページに配置する」で濁してあります。ページごとに記述量が増えて若干デバッグがしづらくなるためです。全ページに目次を配置した場合も、ファイルサイズとしては誤差でしょう。「iframeタグで目次ページを表示させる」ことも可能ですが、今回はリンクを選択しました。

コンテンツの配置レイアウト

body/headerに章題と章トップページ・目次ページ・前後ページへのリンク、body/footerに前後ページへのリンク、body/main内にそのページのコンテンツを配置しました。
書籍と構成は変わるものの「常に(画面上という意味でなく)表示されて欲しい情報」とコンテンツとして欲しい情報といった整理を行うことに変わりはありません。

書籍版と見せ方を変えるもの

Webブラウザーでは紙の本ではできない操作が可能です。今回、次のような変更をしています。

  • コードブロックにoverflow:scrollを設定。
  • h3のsection内容をdetailsタグでアコーディオン表示設定。
  • 画像にwidth:100%を指定。

記事内容の主題といっても良い箇所だと思うんですが、3行で終わってしまいました。

相互参照、リンク

これは「できるならやった方が良い」という話です。HTML版用に新たに用意するにはコストが高く、やるのであればHTML版に関係なく取り組む価値があります。
書籍内の単語や索引、図参照などをハイパーリンクとして設定することについて、元原稿であまり積極的に設定していなかったためにほぼ見送りました。PDF用にリンク用の機構をしっかり準備、活用していれば流用できただけに惜しいです。

メタデータ

「メタデータ、head内をどこまで用意するか」といった話があります。「この場所(弊社Webサイト)にこのコンテンツがあることを知っている」方に対して公開する向きが強いため、ひとまず先送りにできるだろうということがあげられます。
JSON-LDによるメタ情報の追加やサーチエンジン巡回用のRobots.txt、といったものですね。

最低限の項目としてtitle、言語、エンコーディング、viewportの初期値といったものは設定しました。これらは文字化けやモバイル端末での表示性確保として最低限設定すべき箇所でしょう。

OGPについてはある程度用意した方がSNS上でのリンク表示が見栄えするのである程度は確保したいので悩ましいところです。

作業が完了していないこともあり今回はこの辺りで。HTML版(、そして販売準備中のプリントオンデマンド版も)の完成まで少しだけお待ちください。

参考資料


月曜日連載! Microsoft Wordスタイル探索 (44)Word文書をHTMLに変換するHTML on Word V1.1で表のヘッダー行、ヘッダー列の変換機能などを追加

Word文書をHTMLに変換するツールHTML on WordがV1.1となりました。

英語版を用意
V1.1ではWindows(OS)の表示言語を英語に設定しているとき、インストーラの言語表示が英語になります。また英語版のオンラインマニュアルを用意しました。

表のヘッダー変換機能を追加
変換機能についてもいくつかの機能追加を行いましたが、目玉は表のヘッダーの変換機能です。

HTMLを編集する上で表の編集は厄介です。一方、Wordには簡単に画面で対話的に表を編集する機能があるので、Wordで表を編集してそのままHTMLに変換できればHTMLの表編集が簡単になります。

HTMLの表ではヘッダー行(thead)やヘッダーセル(th)を指定できます。Wordではそれに1対1に対応する機能はありません。

そこでWordで表を編集する際の操作を一工夫してヘッダー行、ヘッダー列を指定するとHTMLのヘッダー行(thead)やヘッダーセル(th)に変換できるようにしました。

表の先頭行を見出し行にする
表の見出しタグ(テーブルヘッダ:thead)を出力するには、表の先頭行に次のどちらかを設定します。
① 表の先頭行を選択して、Wordのリボン「表ツール:レイアウト」の「タイトル行の繰り返し」をオンにする。

リボンの表ツール:レイアウト

リボンの表ツール:レイアウト


② Wordのリボン「表ツール:テーブルデザイン」の「表スタイルのオプション」で「タイトル行」のみにチェックする。
リボンの表ツール:テーブルデザインの表スタイルのオプション

リボンの表ツール:テーブルデザインの表スタイルのオプション

表の先頭列を見出し列にする
表の先頭列を選択して、Wordのリボン「表ツール:テーブルデザイン」の「表スタイルのオプション」で「最初の列」のみにチェックすると先頭列のセルを見出しセルに設定します。

リボンの表ツール:テーブルデザインの表スタイルのオプション

リボンの表ツール:テーブルデザインの表スタイルのオプション

変換例
次はWordで先頭行を見出し行にした例(上)と先頭列を見出し列にした例(下)です。
CSSで見出しに対しては次のように指定しています。
・バックグラウンドカラー:Navy
・フォントの色:白

表のヘッダーを設定して変換した例

表のヘッダーを設定して変換した例

こうしてWordで作成した表をHTMLに変換するとき先頭行または先頭列をヘッダーにできるようになります。


【広告】
11月16日(火曜日)16時からの「ちょっと一息・アンテナハウスウェビナー」の録画がYouTubeで公開されております。


※画像をクリックするとウェビナーのアーカイブページに移動しますので、そちらからYouTubeをお進みください。


月曜日連載! Microsoft Wordスタイル探索
◆前回:(43)Wordのコピー&ペーストによるハイパーリンク作成
◆次回:(45)インデント機能の基本
シリーズ総目次


Pages: 1 2 3 4 5 6 7 8 9 10 ... 221 222 223 Next