このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
ドキュメントのコンテンツへの自動番号付け
章、節、テーブル、図の見出しなどのドキュメントのコンテンツに、自動で番号を付けることができます。自動番号付けオブジェクトを、ドキュメントで番号を表示する位置に追加します。自動番号は、各番号の値を順番に決定する番号付けストリームにそれぞれ関連付けられています。レポートの生成によって、自動番号付けオブジェクトは、同じストリーム内の他の自動番号とのドキュメント内での相対的な位置に基いて、番号に置き換えられます。たとえば、ストリーム内で最初の自動番号付けオブジェクトは 1 で置き換えられ、2 番目は 2 で置き換えられ、以後同様に置き換えられます。自動番号付けを使用して、1.1 節や 1.2 節など、階層的な番号付けスキームを作成できます。
プログラムまたはテンプレートに自動番号を定義することによって、ドキュメントのコンテンツに自動で番号付けできます。
プログラムによるコンテンツへの自動番号付け
プログラムによってドキュメントのコンテンツに自動で番号を付けるには、自動的に生成された番号を表示するドキュメント内の各位置で、以下を行います。
mlreportgen.dom.AutoNumber
コンストラクターを使用して、自動番号付けオブジェクトを作成します。コンストラクターに関連付けられた自動番号付けストリームの名前を指定します。たとえば、この行はchapter
という名前のストリームに属する、自動番号を作成します。chapterNumber = AutoNumber('chapter');
メモ
指定された自動番号付けストリームが存在しない場合、
AutoNumber
コンストラクターは、その指定された名前の付いた番号付けストリームを作成します。暗黙的に構成されたストリームは、自動番号をアラビア数字で表示します。他のプロパティをもつストリームを使用するには、Document
オブジェクトの関数createAutoNumberStream
を使用してストリームを明示的に作成します。AutoNumber
を、自動番号に先行するテキストを含むText
、Paragraph
、またはHeading
オブジェクトに追加します。append(chapHead,chapterNumber);
mlreportgen.dom.CounterInc
書式オブジェクトを、自動で番号を付けるコンテンツ オブジェクトのStyle
プロパティに追加します。CounterInc
オブジェクトを追加すると、段落や見出しが出力されるときに自動番号に関連付けられたストリームがインクリメントされます。更新された値によってAutoNumber
オブジェクトが置き換えられます。chapHead.Style = {CounterInc('chapter'), WhiteSpace('preserve')};
このコードは、ドキュメント内の章の見出しに自動で番号を付けます。
import mlreportgen.dom.*; d = Document('MyReport','html'); for rank = 3:5 chapHead = Heading1('Chapter ','Heading 1'); append(chapHead,AutoNumber('chapter')); append(chapHead,sprintf('. Rank %i Magic Square',rank)); chapHead.Style = {CounterInc('chapter'), ... WhiteSpace('preserve')}; append(d,chapHead); table = append(d,magic(rank)); table.Width = '2in'; end close(d); rptview(d.OutputPath);
階層的な自動番号付けの作成
1.1、1.2、1.3、2.1、2.2 といった階層的な番号付けスキームを作成できます。mlreportgen.dom.CounterReset
書式オブジェクトを使用して、親の番号が変化するときに、子の自動番号を初期値にリセットします。たとえば、次のコードは CounterReset
書式オブジェクトを使用して、各章の先頭で章のテーブル番号ストリームをリセットします。
import mlreportgen.dom.*; d = Document('MyReport','html'); for rank = 3:2:9 chapHead = Heading(1,'Chapter '); append(chapHead, AutoNumber('chapter')); chapHead.Style = {CounterInc('chapter'), ... CounterReset('table'), ... WhiteSpace('preserve')}; append(d,chapHead); for i = 0:1; tableHead = Paragraph('Table '); append(tableHead,AutoNumber('chapter')) append(tableHead,'.'); append(tableHead, AutoNumber('table')); append(tableHead, ... sprintf('. Rank %i Magic Square',rank+i)); tableHead.Style = {CounterInc('table'), ... Bold, ... FontSize('11pt'), ... WhiteSpace('preserve')}; append(d,tableHead); table = append(d,magic(rank+i)); table.Width = '2in'; end end close(d); rptview(d.OutputPath);
パーツ テンプレートを使用したコンテンツへの自動番号付け
Microsoft® Word、HTML、PDF の自動番号付けを含むテンプレートを基にドキュメント パーツ オブジェクトを作成し、ドキュメントにパーツを繰り返し追加することで、ドキュメントへの自動番号付けができます。
Word レポートの自動番号付け
章のパーツ テンプレート Chapter
を、Word の MyReportTemplate.dotx
レポート テンプレートのパーツ テンプレート ライブラリに追加するとします。このテンプレートは Word シーケンス (SEQ
) フィールドを使用して、章の見出しに番号を付けます。テンプレートには章タイトルと章のコンテンツのためのホールも含まれています。
このコードは章のパーツ テンプレートを使用して、番号付けされた章を作成します。このコードの最後のステートメントは、レポートを Word で開いて更新します。レポートを更新すると、Word によって SEQ
フィールドが章の番号に置き換えられます。
import mlreportgen.dom.* doctype = 'docx'; d = Document('MyReport',doctype,'MyReportTemplate'); for rank = 3:5 chapterPart = DocumentPart(d,'Chapter'); while ~strcmp(chapterPart.CurrentHoleId,'#end#') switch chapterPart.CurrentHoleId case 'ChapterTitle' append(chapterPart, ... sprintf('Rank %i Magic Square',rank)); case 'ChapterContent' table = append(chapterPart,magic(rank)); table.Width = '2in'; end moveToNextHole(chapterPart); end append(d, chapterPart); end close(d); rptview(d.OutputPath);
HTML レポートの自動番号付け
HTML レポートの自動番号付けを作成するには、counter-increment
プロパティを使用するドキュメント パーツを作成して、スタイル シートでカウンターを定義します。たとえば、Word レポートの自動番号付けで使用されているのと同じプログラムを使用するドキュメント パーツを作成するには、このコードのようなドキュメント パーツ テンプレートをHTML ドキュメント ライブラリに作成します。このコードは chapter
カウンターを定義してクラス an_chapter
を指定することで、自動番号を適用します。これによって、プログラムで処理されるタイトルとコンテンツを入れるホールも定義されます。
<dptemplate name="Chapter"> <p style="counter-increment:chapter;"><span>Chapter </span> <span class="an_chapter"></span> <hole id="ChapterTitle" /></p> <hole id="ChapterContent" /> </dptemplate>
スタイルシートで an_chapter
クラスを定義します。content
プロパティを使用して、コンテンツとして chapter
カウンターを定義します。
span.an_chapter:before { content: counter(chapter); }
Word に使用したものと同じプログラムを、doctype
の値を 'html'
に変更して使用します。
PDF レポートの自動番号付け
PDF での自動番号の作成は HTML に似ていますが、自動番号付けを単純化する PDF テンプレート用の HTML 要素 <autonumber>
が DOM API に用意されている点が異なります。autonumber
要素の stream-name
属性を指定します。ストリームの名前に counter-increment
プロパティの値を使用します。この場合は chapter
です。
<dptemplate name="Chapter"> <p style="counter-increment:chapter;"><span>Chapter </span> <autonumber stream-name="chapter"/> <hole id="ChapterTitle" /></p> <hole id="ChapterContent" /> </dptemplate>
自動番号を使用するために、スタイル シートにプロパティを追加する必要はありません。
Word に使用したのと同じプログラムを、doctype
の値を 'pdf'
に変更して使用します。