一回使ったら止められない CAS-UBの超便利機能 UBテキストのご紹介

今年発売の『PDF CookBook』シリーズの制作では、UBテキストが大活躍です。2冊とも、アウトライン(章見出し、節見出し、項見出し)の作成はWordで行いました。アウトラインをCAS-UBにインポートして見出しを作った後のテキスト本文編集作業は、USテキスト形式で、ほとんど行なってしまいました。

さらに、Javaのサンプルプログラムを書いた担当者に、UBテキストを渡してプログラム部分を編集(重複している部分を最初に出現した箇所への参照に)してもらいました。UBテキストはwikiを拡張したものですので、プログラマであれば一目で内容が理解できるようです。

ご参考のために、下記に『PDF CookBook第2巻』の先頭部分のUBテキストをご紹介します。ちょっと長いですが、最初に簡単な解説をまとめます。

簡単な解説
(1) +で始まる一連の行ブロックは、UBテキスト全体、および各記事のヘッダラベルです。これはCAS-UBからUBテキストをダウンロードするときに自動的に付加される部分です。記事の階層構造(章⇒節⇒項)を表します。
(2) 各記事の本文にはCAS記法でマークアップしています。ここで使っている主なマークアップを紹介しますと:
・[[www.antenna.co.jp/ptl/]] :[[~]] URLリンクになります。
・[[[:index:key=あんごうかのアルゴリズム 暗号化のアルゴリズム]]] :単純な索引です。
・((:footnote [[https://ja.wikipedia.org/wiki/RC4]])) :脚注です。
・[[[:tbl =ISO 32000規定によるPDFバージョンと暗号アルゴリズム・暗号キー長の関係 ~ ]]] :表のブロック(表のキャプション)
・|=PDFバージョン|=使用できる暗号アルゴリズム|=暗号キー長| :表のヘッダ(セル)
・|PDF 1.3|RC4|40| :表の本体(セル)
・=狙い・効果 :見出し
・{{:width=50% GetCryptInfo-top.png}} :画像(width=50%は画像の幅指定)
・*ユーザーパスワードのみ設定されていると、… :箇条書きの1項目
・*[[[:mindex [[[:nodisp:prim API]]][[[:second setPassword() :暗号化されたPDF文書を読み込む際のパスワードを設定]]]]]] :親子の索引
・{{{ ~~~ }}} :整形済みブロック

CAS記法でマークアップの一覧表はこちらです

テキストエディタは使い易いものがいろいろあります。しかも、無料のものまであります。テキストエディタによる編集は、Webブラウザから操作するよりも、実に素早く便利です。

ここからUBテキストの例

+ updated: 2018-06-02T06:33:47+0900
+ ahax$kind: article
+ author: AuthoringOne
+ title: PDF CookBook 第2巻
+ name: publ

++++++++
+ updated: 2018-06-03T08:46:40+0900
+ ahax$kind: article
+ author: AuthoringOne
+ title: はじめに
+ name: i01-0001
+ ahax$parent: publ
+ ahax$entryClass: preface

『PDF CookBook』は、電子の紙PDFを企業向けのシステムで編集したり、加工したりする方法を紹介する本です。いわば、PDFをメイン素材とする料理本です。

(省略)

PDF Tool APIには無料でお使いいただける評価版を用意しています。次のページをご参照ください。

[[www.antenna.co.jp/ptl/]]

本書のプログラム例はJava で作成しています。本書で紹介しているプログラム例は次のページよりダウンロードしていただけます。

[[www.antenna.co.jp/ptl/cookbook/source/]]

(省略)

本書はシリーズ2巻目にあたります。第2巻では、PDF Tool APIの機能のうち第1章セキュリティ、第2章透かし、第3章しおりをテーマに取り上げています。シリーズ初巻には巻番号が付いていませんが、本書の本文中では『PDF CookBook』第1巻として参照しています。

++++++++
+ updated: 2018-06-03T08:46:40+0900
+ ahax$kind: article
+ author: AuthoringOne
+ title: セキュリティ
+ name: i02-0001
+ ahax$parent: publ
+ ahax$entryClass: chapter

ISO 32000-1:2008(以下、ISO 32000-1)は権限をもたないユーザーによるPDF文書へのアクセスを防止するための暗号化機能として、共通鍵(パスワード)による暗号化と公開鍵による暗号化の2種類を規定しています。本章の第1節ではパスワードによる暗号化の機能と使い方を説明します。PDF Tool APIは公開鍵による暗号化の機能はありません。

さらに、PDF Tool APIは、ISO 32000-1には規定されていない、独自の閲覧制限機能があります。第3節では独自の閲覧制限の使い方について説明します。

++++++++
+ updated: 2018-06-03T08:46:40+0900
+ ahax$kind: article
+ author: AuthoringOne
+ title: パスワードセキュリティ
+ name: i02-0002
+ ahax$parent: i02-0001
+ ahax$entryClass: section

PDF文書の内容はパスワードによって暗号化することで、権限をもたないユーザーによるアクセスを防止できます。ISO 32000-1の用語ではパスワードによる暗号化機能を標準セキュリティハンドラと呼びます。PDFは上位バージョンほど標準セキュリティハンドラの機能が強化されています。

標準セキュリティハンドラは[[[:index:key=あんごうかのアルゴリズム 暗号化のアルゴリズム]]]として[[[:index RC4]]]と[[[:index AES]]]のどちらかを選択します。当初から使われてきたのはRC4ですが、RC4には、既に脆弱性の点で問題が指摘されています((:footnote [[https://ja.wikipedia.org/wiki/RC4]]))。ASE 128の脆弱性は現時点では問題とされていないようです((:footnote [[ http://www.cryptrec.go.jp/topics/cryptrec_20110912_aes_cryptanalysis.html|128ビットブロック暗号AESの安全性について\\ http://www.cryptrec.go.jp/topics/cryptrec_20110912_aes_cryptanalysis.html]]))。

PDFのバージョンによって暗号化に使うキーの長さに制限があります。[[[:index:key=あんごうかのキーちょう 暗号化のキー長]]]はパスワードの文字数(パスワードの長さ)ではなく、標準セキュリティハンドラが内部的に計算して作成する値です。キーの作成方法はISO 32000-1で規定されています。

[[[:tbl =ISO 32000規定によるPDFバージョンと暗号アルゴリズム・暗号キー長の関係
|=PDFバージョン|=使用できる暗号アルゴリズム|=暗号キー長|
|PDF 1.3|RC4|40|
|PDF 1.4|RC4|40/128|

(省略)

|PDF 1.7アドビ拡張|AES|256|
|PDF 2.0|AES|256|

ISO 32000-1の仕様上は、PDF 1.4以降では暗号化のキー長は40ビット超128ビット以下の範囲で8の倍数単位で設定できます。しかし、PDFアプリケーションの多くは128ビットに固定しています。

]]]

PDF Tool APIでは暗号アルゴリズムの種類と暗号キーの長さを指定できます。

PDF Tool APIでは暗号化するときのキー長は40ビット、128ビット(256ビット)のどちらかを指定できます。一方、暗号を解読するときは8の倍数で可変のキー長の指定を受け付けます。

PDF Tool API V5では、AES 40ビットは設定できません((:footnote AESの仕様では暗号のキー長は128ビット以上とされています。ISO 32000-1でAES 40ビットを規定しているのは誤りの可能性があります。いずれにせよ新しく作成するPDF文書に40ビット暗号は使わないことを推奨します。)

(省略)

PDF Tool APIでは、入力PDF文書のバージョンと指定した暗号アルゴリズムと暗号キーの長さの組みによって、出力されるPDF文書のバージョンは、次表のようになります。

[[[:tbl =PDF Tool APIで出力されるPDF文書のバージョン
|=入力PDF文書のバージョン|=RC4 40|=RC4 128|=AES 128|=AES 256
|PDF 1.3|1.3|1.5|1.6|1.7
(省略)
|PDF 1.7|1.7|1.7|1.7|1.7
]]]

PDF文書には、[[[:index ユーザーパスワード]]]と[[[:index オーナーパスワード]]]のどちらか一方または両方を設定できます。ユーザーパスワードはPDF文書を開くためのパスワードです(詳細は[[##e.i02-0004.ユーザーパスワードによるセキュリティの設定]]を参照)。オーナーパスワードはPDF文書の利用権限を設定するパスワードです(詳細は[[##e.201805301211.オーナーパスワード]]を参照)。

ユーザーパスワードとオーナーパスワードは異なっている必要があります。

*ユーザーパスワードのみ設定されていると、ユーザーパスワードを入力してセキュリティの変更や解除ができます。
*オーナーパスワードのみ設定されていると、オーナーパスワードを入力してセキュリティの変更や解除ができます。
*ユーザーパスワードとオーナーパスワードの両方が設定されていると、(省略)

++++++++
+ updated: 2018-06-03T08:46:40+0900
+ ahax$kind: article
+ author: AuthoringOne
+ title: セキュリティ情報の取得
+ name: i02-0003
+ ahax$parent: i02-0002
+ ahax$entryClass: subsection

{{:width=50% GetCryptInfo-top.png}}

=狙い・効果

PDF文書のパスワードによる[[[:index:key=セキュリティのじょうほうをしゅとく セキュリティの情報を取得]]]します。

=処理の概要

PDF文書のセキュリティ設定は、PDF文書のトレイラーにある暗号辞書に記録されています。暗号辞書からユーザーパスワードの設定状況とオーナーパスワードの権限設定内容を取得して画面に表示します。入力PDF文書にユーザーパスワードが設定されているとき、PDF文書を開くには正しいパスワードの入力が必要です。

=PDF Tool APIの主な機能

*[[[:mindex [[[:nodisp:prim API]]][[[:second setPassword() :暗号化されたPDF文書を読み込む際のパスワードを設定]]]]]]

(省略)

*[[[:mindex [[[:nodisp:prim API]]][[[:second getType() :権限設定タイプ取得]]]]]]

=プログラム例

{{{
package cookbook;
import jp.co.antenna.ptl.*;
public class GetEncryptInfo {

(省略)

}
}
}}}

=プログラムファイル名

GetEncryptInfo.java

=入出力操作の例

{{:width=80% GetEncryptInfo.png}}

次は暗号化キー長256ビットのAESでオーナーパスワード設定したPDF文書の例です。

{{:width=80% GetEncryptInfo1.png}}

次は暗号化キー長256ビットのAESで添付ファイルのみ暗号化したPDF文書の例です。

{{:width=80% GetEncryptInfo-2.png}}

UBテキストによるフローは次のようになります。特に難しく考えることはなくテキストファイル(UBテキスト)のダウンロードとアップロードが追加になるだけです。

参考資料
[1] UBテキストの使用例 ― 記事の構成を変更する
[2] CAS-UBで編集中の出版物をダウンロードし、テキストエディタで編集し、元に戻す
[3] CAS-UBで編集中の出版物をダウンロードし、テキストエディタで編集し、元に戻す(2)UBテキスト
[4] CAS-UB V5にアップグレードしました。レスポンシブなWebページ生成や、UBテキスト機能の公開などが目玉です。
[5] CAS-UBで編集中の出版物をダウンロードし、テキストエディタで編集し、元に戻す

MathMLの未来を考える―(1)現状の整理

MathMLが今後どのように普及するか、未来を考えてみたい。このため、まずは、2017年11月時点での現状を整理してみる。

1. MathMLの作成
○数式エディタ
デザインサイエンス社のMathTypeは数式専用のエディタであり、編集した数式をMathMLで出力できる。MathTypeをWord、Pages、iBooksAuthorなどのワープロに組み込んで使える。

○WordのOOXMLから変換
Microsoft Wordはバイナリ文書(doc)形式の時代には、MathTypeの簡易版を組み込んでいた。Word文書形式がOffice Open XML(docx)形式になったWord 2007より独自開発の新しい数式エディタを内蔵している[1]。この新しい数式エディタで編集した数式は、OOMXL形式の文書中では独自の数式XML (Office Math Markup Language (OMML))で保存される[2]。このOMML形式の数式をWord内蔵のスタイルシートでMathMLに変換したり、Wordの編集画面から数式をコピーしてメモ帳にMathMLとして貼り付けることができる。

○TeXから変換
TeXマークアップをMathMLマークアップに変換するツールは様々なところからオープンソースとして提供されている。例えば、PagesとiBooks AuthorはLaTeXで数式を書くことができる。その場合は「blahtex」を使ってLaTeXで入力した数式をMathMLに変換している[3]

○直接記述
PagesとiBooks AuthorはMathMLを直接記述して数式を入力できる[4]

2. MathMLを使える主な配布形式の紹介
○XML文書
MathMLはXML形式のマークアップである。XMLではメインの文書の中に他の語彙によるマークアップを組み込む、名前空間という仕組が用意されている。名前空間を使えば任意のXML文書にMathMLを組み込むことができる。なお、以下に主なマークアップ語彙でのMathMLの採用例を挙げる。

○XHTML
XHTMLは、HTMLをXMLとして表現した語彙であり、上記の名前空間の機構をつかってMathMLを組み込むことができる。

○HTML5
HTML5は、MathMLの語彙をHTML5の要素と同様に扱ってHTML5文書中に記述できる(ネイティブサポートという)。こうして組み込まれたMathMLによる数式の解析は、XMLとして組み込まれたときの解析とは若干の相違が生じる。MathMLのバージョン3仕様も、HTML5に組み込むために改訂された(MathML3.0 Second Edition)。

XHTMLとHTMLでどのような点が異なるかはMathML 3.0仕様書に整理されている[5]

○EPUB3
EPUB3.1は、MathMLを本文中に組み込むことができる。但し、若干の制約が付いている[6]

○JATS
Journal Article Tag Suite (JATS) の正式版V1.1および安定ドラフト版V1.2d1は、いずれもMathMLを組み込める。数式の最上位は<mml:math>である。

○DITA
DITA 1.2まではDITAでMathMLを使おうとするとDITA 1.1で導入されたforeign要素を特殊化してMathMLを使えるようにする必要があった。DITA 1.3では数式とMathMLの二つのドメインが追加された。MathMLドメインを使えば特殊化する必要がなくなった[7]

○DAISY
DAISYコンソーシアムのMathML in DAISY Working GroupはDAISY3標準で数式をアクセシブルにするための仕様の策定を最優先課題としている[8]

3. MathMLのレンダリング
(1) 可視化(ビジュアルレンダリング)
○ブラウザネイティブ
FireFoxはMathMLをブラウザ自体の機能で可視化できる。但し、MathMLの要素や属性などを完全にサポートしている状態ではない。MathJax、KaTeX、MediaWIkiに対して、FireFoxのネイティブなMathMLレンダリングを強制するためのAdd-onも用意されている[9]

Safariは5.1からMathMLをサポートしている。それはボランティアによるWebKitの改善努力に依存するものであまり高精度とは言えなかった[10]。しかし、IgaliaによるWebKitの改善が続けられている[11]
Chrome、EdgeはMathMLをサポートしていない。
Microsoft DevelopperのページではMathMLサポートに関する投票が行われている[12]

○MathJaxによるサポート
MathJaxはMathMLをサポートしないブラウザの上で、MathMLを表示するJavaScriptプログラムである。MathJaxは多くの学会や団体が支援しており、最も成功したオープンソースの一つとして普及している。MathJaxの最新版は2.7(2017年8月リリース)である。

MathJaxは、現在、3.0を開発中である。3.0ではアーキテクチャが根本的に変更になることが告知されている[13]

○プラグイン数式レンダラ
デザインサイエンス社のMathPlayerは、当初は、IEのプラグインとして普及した。しかし、IE10以降ではMathPlayerをプラグインとして使うためのAPIが禁止になってしまった。

○XML組版ソフト
(2) 読み上げ(音声レンダリング)
○デザインサイエンス社のMathPlayerは、MathMLを音声で読むことができる[14]。MathPlayerは無料で配布されている。

4.MathMLの歴史
W3C 勧告の歴史はMathML勧告のバージョン史[15]にまとめられている。
1998年4月に MathML 1.0
2001年2月に MathML 2.0 (2003年10月 Second Edition)
2010年10月に MathML 3.0 (2014年4月 Second Edition) Second Editionでは、主にHTML5でMathMLを使うのに適合するようにXMLのパースに関する前提条件の変更の改訂がなされた。

5. まとめ
MathMLは、ドキュメントをXMLで記述するときに、数式を表現する技術として重要な存在である。必ずしも常に順風満帆という状態ではないが、徐々に普及していることが確かめられる。XML以外ではHTML5でもネイティブにサポートされている。但し、ブラウザのネイティブレンダリングに向けて足並みが揃っている状態ではない。MicrosoftのEdgeのプロジェクトでMathMLサポートへの投票が行われているが、投票者のコメントを見ると視覚障害者から熱烈な要望が多いようだ。

[1] Office2007の新しい数式エディタ
[2] 22.1 Math “ECMA-376-1:2016 Office Open XML File Formats — Fundamentals and Markup Language Reference” October 2016
[3] Pages および iBooks Author での LaTeX と MathML の対応について
[4] Pages で書類に方程式を追加するiBooks Author: LaTeX、MathML、または MathType で数式を追加する/編集する
[5] 6.4.3 Mixing MathML and HTML “Mathematical Markup Language (MathML) Version 3.0 2nd Edition”
[6] 2.5.1 Embedded MathML “EPUB Content Documents 3.1
Recommended Specification” 5 January 2017

[7] B.2.1 Changes from DITA 1.2 to DITA 1.3 “Darwin Information Typing Architecture (DITA) Version 1.3 Part 0: Overview”
[8] MathML
[9] Mozilla MathML StatusNative MathML
[10] WebKitの数式(MathML)でSafariはボランティアの努力を採用し、数式を表示できる。Chromeは同じものを不採用として批判を浴びる。
[11] Improvements in MathML Rendering
[12] How can we improve the Microsoft Edge developer experience? MathML
[13] MathJax V3開発は、根本的な方針変更となる
[14] MathPlayer Can Speak!
[15] MathML Recommendation Version History

【広告】
「MathML数式組版入門 Ver 1.1」

索引について―階層化索引を簡単に作る方法を考えました。

前回[1]は、主に索引の目的について考えてみました。

今回はちょっと実践的に、ECMJ流!のシリーズの制作の際に階層化索引を簡単に作る方法を考案しましたので、それについてご紹介します。

階層化索引というのは例えば次のような形式です。この例では親階層が「Eコマース」、「Eコマース革命」です。その子供の索引として「大企業のEコマース」、「中小企業のEコマース」などがあります。Eコマースが共通ですので、表示を簡素化するためダッシュで代替しています。

○PDFのとき巻末に索引を自動生成し、ページ番号から本文の索引語位置への内部リンクを設定
20170131

○PDFのとき巻末に索引を自動生成し、索引語または(複数箇所あるとき)索引語のカウンターから本文の索引語位置への内部リンクを設定
20170131c

CAS-UBの編集画面には簡単な索引を作る対話式のダイヤログがあり、これを使えば1階層の索引を簡単につくることができます[2]

残念ながら、現在のところ、編集画面のダイヤログでは階層化索引を作ることができません。そこで、CAS-UBの編集画面で手入力でCAS記法のマークアップすることになります。

CAS記法のマークアップの説明はこちら:CAS記法リファレンス

親子の索引は本文に次のようにマークアップします。
[[[:mindex [[[:prim:key=xxx 親の索引語]]][[[:second:key=yyy 子供の索引語]]]]]]
xxxに親の索引語の読み、yyyに子供の索引語の読み

しかし、どうもまだるっこしいので、テキストファイルとして索引を用意する方法を考えてみました。

上の図の例の索引を作るには、次のようなテキストファイルを用意します。

[[[:nodisp:mindex [[[:prim Eコマース]]][[[:second:key=だいきぎょうの―― 大企業の――]]]]]]
[[[:nodisp:mindex [[[:prim Eコマース]]][[[:second:key=ちゅうしょうきぎょうの―― 中小企業の――]]]]]]
[[[:nodisp:mindex [[[:prim Eコマース]]][[[:second パソコンでの――]]]]]]
[[[:nodisp:mindex [[[:prim Eコマース]]][[[:second モバイルでの――]]]]]]

[[[:nodisp:index:key=Eコマースかくめい Eコマース革命]]]
[[[:nodisp:mindex [[[:prim:key=Eコマースかくめい Eコマース革命]]][[[:second:key=――いこうの2ねんかん ――以降の2年間]]]]]]

(:nodispは索引語をPDFとEPUBの本文に表示しないという指定です)

それで索引語検索して、ヒットしたところに、索引のマークアップを貼り付けていきます。こんな感じです。

(1)「大企業のEコマース」を検索します。
20170131a

(2)ヒットした中で索引を付ける箇所を選択します。この場合は(9,76)の位置に付けますので、(9,76)をクリックします。

(3)すると編集画面で(9,76)の位置にジャンプします。テキストファイルから

[[[:nodisp:mindex [[[:prim Eコマース]]][[[:second:key=だいきぎょうの―― 大企業の――]]]]]]

をコピーして、索引語の前に貼り付けます。

(4)貼り付けた結果は次の図のようになります。

20170131b

(5)PDFとEPUBを作成すると索引のページが自動的に作られ、索引の各項目から本文へのリンクが設定されます。本文の索引語が非表示でもリンク先としては有効ですので、索引のマークアップは索引からジャンプしたい箇所に設定して置くのが良いです。

[1] 索引論再訪ー索引の目的とは。索引をどうやってつくるか?
[2] 1階層の索引の作り方は、動画とブログで紹介しています。動画とブログは下記の過去記事をご覧ください。

CAS-SUPPORTブログの索引関連その他の過去記事
[1] CAS-UBの編集デモ動画 新ファイル : 索引を追加する
[2] EPUB・PDFで索引や親子索引を作るためのCAS記法の例
[3] CAS-UBではEPUBに索引を自動的に出力できます。
[4] 索引の作り方を考える。一歩進んで、本文に出てこない索引語や、索引語の階層化の試み。

CAS-UBの編集デモ動画 新ファイル : 索引を追加する

ブログの記事を整理した本文ができあがりました。本には索引が必要ですので、簡単な索引を設定します。

【シナリオ】
1.索引を設定します
(1) 本文で索引項目を選定します。日本語の漢字を含むときは、索引の読みを入力して、「CAS記法」をクリックすると索引がマークアップされます。
(2) アルファベット・カタカナ・ひらがなは読みの入力は不要です。
(3) 本文中に表示されない索引項目は位置だけ指定し、索引語と(必要なら)読みを入力します。索引のマークアップには:nodisp属性が付きます。
(4) PDFに索引を「出す」「出さない」を設定します。(索引項目が一つもないと、「出す」としても索引ページはできません。)
(5) 目次に索引ページが追加されています。
(6) 索引項目には本文へのリンクが設定されます。

※PDFの生成設定は本文二段組みとなっている。

【デモ動画】
索引を追加する(mp4動画です)

【デモ動画一覧】(それぞれMP4ファイルを表示します)
(1)新出版物を作り『蕎麦の味と食い方問題』(青空文庫)をコピーする
(2)ルビ、縦中横、リンクをマークアップする
(3)Wordからの外部入力の操作例
(4)PDF生成の基本設定
(5)PDF生成のレイアウト調整
(6)PDFの後書きのページ内配置と見出しの指定変更
(7)『XSL-FOの基礎』サンプルレイアウト改善の例
(8)ブログをコピーして節の本文に貼り付け、項の見出しを付ける
(9)目次に出す見出しのレベルを二つから一つに変更する
(10)検索、検索・置換する、記事の先頭はそのままにする
(11)Word文書で作成した「前書」を追加します。

CAS-UBの編集デモ動画 新ファイル : 前書を追加する

ブログの記事を整理した本文ができあがりました。そこで、Word文書で作成した「前書」を追加します。

【シナリオ】
1.本文第1章~第9章に「前書」を追加する
2.まえがきはWordの原稿で用意する
3.Wordの原稿からインポートする
4.記事の種類を「前書」に設定する
※「前書」は自動的に目次の前に配置する
 「前書」には番号は付かない

※PDFの生成設定は本文二段組みとなっている。

【デモ動画】
前書を追加する(mp4動画です)

【デモ動画一覧】(それぞれMP4ファイルを表示します)
(1)新出版物を作り『蕎麦の味と食い方問題』(青空文庫)をコピーする
(2)ルビ、縦中横、リンクをマークアップする
(3)Wordからの外部入力の操作例
(4)PDF生成の基本設定
(5)PDF生成のレイアウト調整
(6)PDFの後書きのページ内配置と見出しの指定変更
(7)『XSL-FOの基礎』サンプルレイアウト改善の例
(8)ブログをコピーして節の本文に貼り付け、項の見出しを付ける
(9)目次に出す見出しのレベルを二つから一つに変更する
(10)検索、検索・置換する、記事の先頭はそのままにする

EPUB3.0のアクセシビリティを高めるためのガイドライン

EPUB3.0形式の電子書籍のアクセシビリティについては、EPUB3.0を制定した団体であるIDPFが制作して配布している「EPUB 3 Accessibility Guidelines」[1]を紹介する。

EPUB3.0のパッケージ中は、XHTML5、CSS、SVGとJavaScriptというWebコンテンツ形式で構成する。従って、アクセシビリティの基本はWebアクセシビリティ、つまり、WCAG(Webアクセシビリティガイドライン)とWAI-ARIA(アクセシブルなリッチインターネット・アプリケーション)である。但し、EPUB3.0には、PLS辞書(発音辞書)、ナビゲーション文書のような独自の機能もある。

EPUB3.0では、音声読みあげツールなどの支援技術を使ったときにも、本の読み順が分かりやすいようにマークアップしなければならない。EPUB3.0のアクセシビリティを高めるポイントは非常に多岐にわたる。

EPUB 3 Accessibility Guidelinesは、次の構成になっている。

1. 意味
・論理的な読み順
・epub:type属性
・スタイルの分離
2. XHTMLコンテント文書
2.1 一般
・言語
・ページ番号
・インライン・フレーム
2.2 整形
・ボールドとイタリック
・リンク
2.3 前付
・出版された仕事
・目次
・イラストの一覧
・表一覧
2.4 本文
・部・章・節
・見出し
・表
・箇条書き
・説明
・図
・画像
・画像マップ
・オーディオ
・ビデオ
・脚注・後注
・注釈
・文脈の区切り
2.5 後付
・文献一覧
・索引
3. MatML
・説明
4. SVG
・言語
・タイトルと説明
・部品
・テキスト内容
・リンク
・スタイル
・対話性
5. EPUB スタイルシート
・色
・背景とイメージ
・隠れた内容
・重要なルール
・CSSのプロパティ参照表
6. 固定レイアウト
・XHTML
・イメージ
7.ナビゲーション
・目次
・ランドマーク
・ページリスト
・図一覧
・表一覧
8.メタデータ
・ONIXコードリスト196
・Schema.orgアクセシビリティ・メタデータ
9.メディアオーバレイ
・概要
・ハイライト
・箇条書き
・表
10. テキストから読み上げ
・概要
・PLS辞書
・SSML
・CSS3スピーチ
11. スクリプトに依る対話性
・プログレッシブ・エンハンスメント(UAの能力に応じて機能を拡張)
・コンテンツの妥当性
・WAI-ARIAとカスタムコントロール
・フォーム
・ライブ領域
・キャンバス
12. 準拠
・参考資料:セクション508

[1]EPUB 3 Accessibility Guidelines(このWebページもEPUBも、最初の「Getting Started」の見出しがO’Reilly本の広告へのリンクになっているので注意)。この資料は、Webページとして閲覧できるほか、EPUB形式でも無料でダウンロードできる。
[2] アクセシビリティとは(草稿)
[3] 著作権法とアクセシビリティ(草稿)
[4] アクセシビリティという言葉がどのように使われているか
[5] PDFのアクセシビリティ。ワンソースマルチユースのもう一つの応用。

ナビゲーションとは(草稿)

JEPAサイトで完成版公開
ナビゲーション

ナビゲーションは航法、航海術を表す言葉であり、船舶や航空機などを目的地まで導くことやその役割を意味する。近年は、インターネットのWeb、電子書籍などのデジタル出版分野でも目的とする情報にたどりつくことやそのための手段のことをナビゲーションというようになった。ちなみにHTML5でナビゲーション用のリンクをグループ化する<nav>タグが定義された。ここでは、デジタル出版物を中心としてナビゲーションについて検討する。

紙の出版物

紙の本ではナビゲーションという言葉は使わない。しかし、機能としてのナビゲーション、すなわち目的の情報に導く手段はいろいろある。紙の本で目的地を示す情報には、見出し番号と見出し、図表番号とキャプション、ノンブル(ページ番号)、柱などを用意する。目的地に導く方法として、ぱらぱらとページをめくって探す、目次から辿る、索引や図表一覧から辿るなどが使われる。さらに、ユーザーのカスタム情報として栞紐(しおりひも)を使う 、紙のしおりを挟む、付箋を貼るなどの手段を使うことがある。

PDF

PDFは紙の本をデジタル化したものなので、目的地を示す情報は紙で用意されている項目と同じである。目的地に導く方法は、PDFに用意するものとしては、アウトラインツリー(目的地毎にアウトライン項目を用意し、アウトライン項目をツリー構造で示したもので、Acrobatでは、アウトラインツリーを「しおり」表現している)、サムネイルなどがPDF独自の方法である。アウトライン項目、目次の見出し、索引の項目から目的地へのリンクを設定できる。

紙より便利な点は、リンクのテキストをクリックすると目的地にハイパージャンプできることである。PDFリーダーは、ページを捲る方法として「進む」、「戻る」、「先頭」、「最後」を用意しているのは普通である。しかし、紙のページをぱらぱらめくるのに相当する機能が用意されているPDFリーダーはあまり見かけない。読んでいるPDFに対してユーザーが自分専用の目的地のしるしをつけるためのカスタム手段は、PDFリーダーがサポートすべき項目であるが、こうした機能をもつPDFリーダーは見かけない。

EPUB3

EPUB3では目的地を示す情報として読者に見えるのは、見出し番号と見出し、図表番号とキャプション位である。EPUB3では柱で目的地を示すことができないし、特にリフロー型EPUBではEPUBリーダーが表示するページ番号は目的地を示すために使えない。ハイパーリンクの行先アドレスは、目的地を示すが可視化されない。

EPUB3では、目的地に導く方法として、ナビゲーション・ファイル(<nav>要素にepub:type=”toc” を指定したファイル)を必ず用意しなければならない。しかしナビゲーション・ファイルに記載する情報は標準化されていない。日本電子書籍出版社協会の電書協 EPUB 3 制作ガイドでは「版元から特に指示がないかぎり、カバーページ、目次ページ、奥付ページへのリンクのみとする」とされているなど、あまり重視されていない。むしろ、ナビゲーション・ファイルとは、別に、本文とは同様なレイアウトを設定する目次ファイルを用意することが多い。索引や図表一覧などは用意することができるが、市販の電子書籍ではあまり使われていない。

紙より便利な点は、リンクのテキストをクリックすると目的地にハイパージャンプできることである。EPUBリーダーは、ページを捲る方法として「進む」、「戻る」、「先頭」、「最後」を用意しているのは普通である。また、スライダーでページ素早く進むインターフェイスを用意しているEPUBリーダーもある。読んでいるEPUBでユーザーが自分専用の目的地のしるしをつけるためのカスタム手段をサポートするEPUBリーダーも珍しくない。しかし、全体としてEPUBのナビゲーションは紙と比べて機能が低い。

本の形を考える―段落のインデント(CAS-UBの場合どうするか(草稿))

CAS-UBでユーザーが段落・パラグラフ(p要素)を配置できる要素について検討してみます。以下は、CAS-UB実装メモであり検討中のものです。

注意)CAS-UBは内部的にはHTMLを主にクラス属性を使って拡張した形式でデータを処理しています。但し、コンテンツを記述するのは簡易マークアップ記法であるCAS記法を用いているため、HTMLで使うことのできるすべての要素の組み合わせを記述することができません。

〇章・節・項など(div class=”level2″~div class=”level9″)の内容
pはh1~h6タグの兄弟となる。

〇引用(blockquote)
pはblockquoteの子供である。
引用の中に見出し(h1~h6)を置いたとき、pはdivの子供でh1~h6の兄弟となる。

1.短い引用は段落の中に取り込む。MLAは散文なら4行以内は取り込む。([1]p.124)
2.散文の長い引用。([1]p.125)
2.1 一段落またはその一部だけを引用するとき、一行目を他の行よりもインデントしない。
2.2 二つ以上の段落を引用する必要があるとき、各段落の一行目を1/4インチだけ追加でインデントする。もし、オリジナルが最初の段落を深くインデントしてないなら、最初の段落をインデントしないで2段落以降のみインデントする。

〇表のセル(td, th)
HTMLのモデルではliの中にpを置くことができるがCAS記法では記述できない。
但し、HTMLの表を直接埋め込んだ場合には、表のセルはパラグラフを複数含むことができる。

〇箇条書きの説明(li)
HTMLのモデルではliの中にpを置くことができるがCAS記法では記述できない。liの内容が二つ以上のパラグラフをもつことはない。

〇用語定義リストの説明(dt)
HTMLのモデルではliの中にpを置くことができるがCAS記法では記述できない。liの内容が二つ以上のパラグラフをもつことはない。

〇特殊なブロック
CAS記法では、次の5種類のクラス属性をもつdiv(ブロック)を特殊化したブロックと言い、それぞれにスタイルをあらかじめ指定しています。
1. サマリー(div class=”sum”)
2. コラム(div class=”col”)
3. 注釈(div class=”ann”)
4. 画像(div class=”fig”)
5. 表(div class=”tbl”)

1~5でpはdivの子供である。
キャプションがあるとき、pは、div class=caption の兄弟となる。

〇検討事項
CAS記法ではクラス属性のないdivの中にパラグラフを記述できます。このときpはdivの子供となります。このdivの最初の子供であるpを先頭の段落とするべきかどうか?

その他例えば、パラグラフとパラグラフの間に、別のブロック要素が挿入されたときブロック要素の後に続くpは一つ目とするべきか、それとも二つ目(以降)とするべきか? →継続する段落はpにcont属性を付ける。

段落と段落の間に空きがあったとき。ポーズの空きがあるとき、空きの後の段落はどうするか?

〇参考資料
“Thinking with Type”[2]に、段落のレイアウト・スタイルの様々な見本が掲載されている。

[1] MLA Style Manual and Guide to Scholary Publishing
[2] http://www.thinkingwithtype.com/contents/text/#Marking_Paragraphs

本の形を考える―箇条書きのスタイル(草稿)

英語の本の箇条書き(リスト)のスタイルについて調べてみました。まだ、調査は不十分で規則として言えるような段階ではないですが。とりあえず整理してみます。この文章では、箇条書きとリストは同じ意味で用いています。

最初にルールブックの記述を見ます。

1.Hart’s rule[1]
・箇条書きにはディスプレイとインラインがある(p.286)

ディスプレイ・リストには3つのタイプがある(p.287)
・番号や文字で印をつける
・ビュレットで印をつける
・マーカーのないリスト

番号・文字・ビュレット(p.288)
・ローマン、イタリック、ポイント有無はデザインによる
・Oxford Style:1、(a)、(i)の順だが、1、(i)、(a)でも良い
・階層が深い時は、大文字のアルファベット、大文字のローマ数字を使っても良い
・項目の階層が無い時はビュレットのようなタイポロジカル記号を使う。ビュレットと項目テキストの間はenスペース。

番号もビュレットもない単純なリストでも良い

2.Chicago Style[2]

テキストの中に入るリストと縦に配置するリストがある。リストを縦に配置するのは次のとき。(6.124)
・タイポグラフィックに目立つようにする
・長い
・階層がある

項目を番号付ける時、番号にはピリオドを付けて、テキストは大文字で開始する。項目が2行以上になるときはハンギング・インデントとする。番号付きリストでは先頭は1行目のテキスト開始位置に揃える。インデントする代わりに項目間を空けても良い。(6.127)

項目が長い時は、番号付き段落としても良い。(6.128)

番号付きリストをさらに階層化するときは、番号と文字の両方を使ってよい。数字は最下位で桁ぞろえする。括弧で括る文字はローマンでもイタリックでも良い。階層が深い時の例:

Ⅰ.>A.>1.>a)>(1)>(a)>i)

(6.130)

3.実際の本におけるスタイル

実際の英語の本(4冊)で縦に配置する箇条書き(ディスプレイ)スタイルをチェックしてみました。まだ、確認したケースが少なく、基本的にデザイン依存ですので一般的な要件とは断言できませんが、次のようになっていました。

(1) ラベルのない箇条書き

実際の本では、番号や記号のラベルをつけないで項目を並べる箇条書きは、事例を挙げるまでもなくかなり頻繁にでてきます。その特徴は:
・ブロック全体の左余白は文脈依存
・ブロックの前・後の空きは文脈依存
・1項目の長さが2行になるとき、2行目以降は字下げする(ハングング・インデント)
・項目が短い時、2段組みされることがある
・項目の内容をいくつかのフィールドに分けることがあり、フィールド先頭をタブで位置揃えできると良い

(2) 番号なし箇条書き

番号なし箇条書きは、各項目の先頭にビュレットを置いて項目を目立つようにするものであり、ビジネス本などでは良く見かけます。その特徴は:
・ブロック全体の左余白は文脈依存である。しかし、敢えて言えばビュレットの位置をブロックのパラグラフ左開始位置に置くのが多いようだ。
・ブロックの前・後の空きは文脈依存である。
・項目と項目の間を項目内の改行幅よりも広くすることがある
・ビュレットと項目のテキスト間には若干の空きがある。項目が長い時、2行目は1行目のテキスト開始位置に揃える。

(3) 番号付き箇条書き
番号付き箇条書きもビジネス書などで頻繁に見かけます。その特徴は:
・ブロック全体の左余白は文脈依存である。しかし、敢えて言えば番号の位置をブロックのパラグラフ左開始位置に置くのが多いようだ。
・ブロックの前・後の空きは文脈依存である。
・番号と項目のテキストの間には若干の空きがある。項目が長い時、2行目は1行目のテキスト開始位置に揃える。
・第一階層の番号は通常はアラビア数字で区切りにはピリオドを付ける。

[1] “New Hart’s Rule” Oxford University Press 2005
[2] “The Chicago Manual of Style. 15th Edition” The University of Chicago Press, 2003

本の形を考える―最初の段落の先頭行字下げ規則は?

本の形を考える―段落と段落のスタイルを考える(草稿)(4月5日)[1]で次のように書きました。

英語の文章では先頭の段落は字下げせず、次の段落以降を字下げすることが多い

英語のスタイルの本で先頭段落の字下げについて明記している本は少ないようですが、”New Hart’s Rule”[2]には次のように記述されています。

章、節、項の見出しに続くテキストの最初の行は左マージンまでフルに配置され、パラグラフのインデントはない。続く各パラグラフの最初の行は通常インデントされる。(p.15)

このパラグラフ・スタイルを自動組版でできるだけ簡単に実現するには、先頭の段落とはなにかをプログラムで処理できるように規定する必要があります。そのために実際の本ではどうなっているかを調べてみました。

次に挙げる例は、”Making News at the New York Times”[3]の一部分です。

この本では、章、節の見出しに続く第1段落は字下げなし、第2段落以降は字下げするという標準的な段落スタイルで組版されています。

page150
図1 章のタイトルの直後の段落は字下げしない例(p.150)

本書はニューヨークタイムズの編集現場でのフィールド調査の報告で、記者に対するインタビューの引用箇所が多数あります。引用箇所の多くでは引用の直後の段落で字下げしていません。つまり直後の段落を第1段落として扱っているわけです。

p46
図2 引用の直後の段落で字下げしない例(p.46)

しかし、さらに調べますと、引用の直後の段落で字下げしている箇所も見つかります。

p80
図3 引用の直後の段落で字下げする例(p.80)

こうしてみますと、引用直後の段落を第1段落として扱うか、続きの段落として扱うかは文脈依存になるようです。

MLA Handbook[4]を見ても、引用文のブロックの直後の段落を継続段落(先頭行字下げ)とするか、最初の段落(先頭行を字下げしない)とするかは、文脈依存になっています。

実際の本では、段落と段落の間に、図、数式、引用、箇条書き、(プログラム)コードなどのブロックが入ることが多いのですが、それらのブロック直後の段落で字下げするかどうかを画一的なルールで処理するのは難しいようです。

[1] 本の形を考える―段落と段落のスタイルを考える(草稿)
[2] “New Hart’s Rule” Oxford University Press 2005
[3] Nikki Usher “Making News at the New York Times” The University of Michigan Press, 2014
[4] “MLA Handbook for Writers of Research Papers. Seventh Edition” The Modern Language Association of America, 2009 MLA Handbookは、学部レベルのレポート執筆要綱のガイドなので本文の記述ではなく、印刷された本のレイアウトを見ています。