Main Content

目次の作成

mlreportgen.report.TableOfContents クラスを使用して、レポートに目次を追加できます。この事前定義されたクラスによって、レポートの見出しを含む書式設定済みの目次がレポートに自動的に追加されます。DOM オブジェクトを使用して目次を作成するよりも、このクラスを使用する方がはるかに簡単で効率的です。詳細と例については、mlreportgen.report.TableOfContents を参照してください。

あるいは、DOM オブジェクトを使用することで、目次をレポート プログラムで作成したり、テンプレートを使用して目次を定義できます。プログラムによって目次を作成するには、mlreportgen.dom.TOC オブジェクトをレポート ドキュメントに追加します。

テンプレートを使用すると、そのテンプレートを使用するすべてのレポート プログラムで必ず同じ種類の目次が作成されるようになります。また、テンプレートでは、書式変更の場合に目次の更新が 1 か所のみで済みます。

テンプレートを使用している場合は、以下のいずれかを行います。

  • Word テンプレートまたは HTML/PDF テンプレート パッケージ (root.html) に目次参照を含める。

  • 目次のドキュメント パーツ テンプレートを作成し、そのドキュメント パーツをプログラムによって挿入する。

レポート プログラムではどちらかの方法を使用して、アウトライン レベルを指定する数値レベル オブジェクトまたは段落オブジェクトを指定する、見出しオブジェクトを作成しなければなりません。目次ジェネレーターは、レベル情報をもつコンテンツを使用して構造を定義します。

レポート プログラムでの目次の作成

DOM API は、ドキュメントの目次の自動生成をサポートしています。目次の自動生成を可能にするには、以下のようにします。

  • ドキュメント内で Paragraph オブジェクトまたは見出しオブジェクト (HeadingHeading1 など) を使用して節見出しを指定する。見出しに Paragraph オブジェクトを使用する場合、段落の OutlineLevel プロパティを適切な値に設定しなければなりません。たとえば、章などの最上位の見出しには 1 を設定します。

  • ドキュメントで目次を生成する位置に、目次プレースホルダーを挿入する。目次プレースホルダーは、プログラムによって挿入するか、またはドキュメントのテンプレート内に挿入することができます。

プログラムによる目次の作成

プログラムによって目次プレースホルダーを作成するには、目次を生成する位置に mlreportgen.dom.TOC オブジェクトを追加します。目次に含めるレベルの数およびリーダーのタイプを指定できます。既定値は 3 つのレベルおよび点線リーダーです。この例では、2 つのレベルと点線リーダーを使用します。

import mlreportgen.dom.*;
d = Document('mydoc','pdf');
open(d);

title = append(d,Paragraph('My TOC Document'));
title.Bold = true;
title.FontSize = '28pt';

toc = append(d,TOC(2));
toc.Style = {PageBreakBefore(true)};

h1 = append(d,Heading1('Chapter 1'));
h1.Style = {PageBreakBefore(true)};
p1 = append(d,Paragraph('Hello World'));

h2 = append(d,Heading2('Section 1.1'));
h2.Style = {PageBreakBefore(true)};
p2 = append(d,Paragraph('Another page'));

h3 = append(d,Heading3('My Subsection 1.1.a'));
p3 = append(d, Paragraph('My Level 3 Heading Text'));

close(d);
rptview(d.OutputPath);

テンプレートを使用した Microsoft Word の目次の作成

Word を使用して、Word ドキュメントやドキュメント パーツ テンプレートに Word の目次参照オブジェクトを挿入できます。Word はドキュメントを更新する際、目次参照を自動的に生成される目次に置き換えます。

目次参照を含むテンプレートを使用して DOM Word レポートに目次を生成するには、以下のようにします。

  1. レポート内で目次を生成する位置を指定するには、Word テンプレートに目次参照を作成します。Word の目次参照の作成を参照してください。

  2. 目次に表示する節見出しのアウトライン レベルを設定します。節見出しのアウトライン レベルの設定を参照してください。

  3. 生成されたドキュメントを更新します。Word レポートの目次の更新を参照してください。

Word の目次参照の作成

  1. Word でテンプレートを開きます。

  2. 目次を作成する位置をクリックします。

  3. [参考資料] タブで [目次] をクリックします。

  4. 目次の書式オプションを選択して、目次を生成します。たとえば、[組み込み] 書式オプションを選択します。目次が表示されます。

  5. テンプレートを保存します。

メモ

ドキュメント パーツを使用して目次を挿入する場合、ドキュメント パーツのテンプレートに目次参照を挿入します。テンプレートからインスタンスを削除してから保存します。Microsoft Word のドキュメント パーツ テンプレート ライブラリの作成プログラムでのドキュメント パーツの使用による目次のプレースホルダーの挿入を参照してください。

Word レポートの目次の更新

目次を生成するには、目次参照を含む Word ドキュメントを更新しなければなりません。Windows® システムでは、DOM API rptview コマンドは Word を使用して、Word ドキュメントを表示して更新します。Windows 以外のシステムの DOM API によって生成されたドキュメントなど、Word ドキュメントを直接開く場合、目次を更新しなければなりません。

  1. Word テンプレートで、目次参照を選択します。

  2. [参考資料] タブで [目次の更新] をクリックします。

  3. [目次の更新] ダイアログ ボックスで [目次をすべて更新する] を選択し、[OK] をクリックします。

HTML または PDF テンプレートでの目次の作成

PDF または HTML テンプレートを使用して目次を追加するときに、以下を行うことができます。

  • テンプレート パッケージのメイン テンプレート (root.html) に目次プレースホルダーを含める。

  • ドキュメント パーツ テンプレートに目次プレースホルダーを含める。

ドキュメント パーツ テンプレートを使用して HTML または PDF レポートに目次を生成するには、以下のようにします。

  • 目次プレースホルダーを含むドキュメント パーツ テンプレートを定義する。

  • プログラムによってレポートにドキュメント パーツを挿入する。

  • Paragraph オブジェクトまたは見出しオブジェクト (HeadingHeading1 など) を使用してレポートの見出しを指定する。見出しに Paragraph オブジェクトを使用する場合、その OutlineLevel プロパティを適切な値に設定しなければなりません。

目次のドキュメント パーツ テンプレートの定義

目次のドキュメント パーツ テンプレートを作成または変更するには、コードを以下の形式で使用します。

<dptemplate name="ReportTOC">
     <TOC number-of-levels ="3" leader-pattern="dots" />
</dptemplate>

次が可能です。

  • ReportTOC を任意の名前に置き換える。

  • number-of-levels を、目次に含める見出しレベルの数に設定する。

  • leader-patterndots または spaces に設定する。

例については、PDF と HTML のドキュメント パーツおよびホールを参照してください。

プログラムでのドキュメント パーツの使用による目次のプレースホルダーの挿入

目次プレースホルダーを含むドキュメント パーツのインスタンスを挿入するには、DocumentPart クラスを使用します。テンプレートでドキュメント パーツ テンプレートを定義する場合、ドキュメント オブジェクトを定義する際にテンプレート パッケージ名を含めます。例:

d = Document('MyReport','html','MyTemplate');

このコードは、既定のテンプレート内に用意されているドキュメント パーツ ReportTOC を使用して目次を生成します。

import mlreportgen.dom.*;
d = Document('MyReport','pdf');
append(d,'My Report');

append(d,DocumentPart(d,'ReportTOC'));
append(d,Heading1('Chapter 1'));
append(d,Heading2('Section 1'));

close(d);
rptview(d.OutputPath);

ヒント

ドキュメント オブジェクトに関連付けられたドキュメント パーツ テンプレートを使用するには、DocumentPart 構文の Document オブジェクトに割り当てられた変数を使用します。

append(d,DocumentPart(d,'ReportTOC'));

この構文を使用する場合、ドキュメント パーツを参照する際にテンプレートを呼び出してドキュメント タイプを指定する必要はありません。この方法によってコードが単純化され、より効率的にレポートが生成されます。

節見出しのアウトライン レベルの設定

レポートに目次を生成するには、プログラムは目次に表示する節見出しのアウトライン レベルを設定しなければなりません。アウトライン レベルは、目次で段落のコンテンツが表示されるかどうか、および段落のコンテンツがどのレベルで表示されるかを指定する、段落の書式プロパティです。たとえば、段落のアウトライン レベルが 1 の場合、コンテンツは生成された目次の最上位に表示されます。アウトライン レベルは最大で 9 まで指定できます。

段落のアウトライン レベルを設定するには、以下のいずれかの方法を使用します。

テンプレート定義スタイルを使用したアウトライン レベルの設定

レポートのテンプレートで定義したスタイルを使用して、段落のアウトライン レベルを設定できます。Word ドキュメントには、見出し 1 や見出し 2 など、アウトライン レベルを定義する一連のスタイルが既定で含まれています。プログラムは、これらの組み込みスタイルを使用して、これらの見出しが目次に表示されるように指定できます。この例では、テンプレート定義スタイルを使用して節見出しのアウトライン レベルを設定し、テンプレート MyTemplate が目次参照を含むと仮定します。

import mlreportgen.dom.*;
d = Document('MyReport','docx','MyTemplate');

append(d,Paragraph('Chapter 1','Heading 1'));
append(d,Paragraph('Section 1','Heading 2'));

close(d);
rptview(d.OutputPath); % Updates the TOC

Word または HTML エディターを使用して独自の見出しスタイルを定義した後、それらを使用してレポートを生成することもできます。

書式オブジェクトを使用したアウトライン レベルの設定

書式オブジェクトを使用して、アウトライン レベルを設定できます。この例では、テンプレート MyTemplate が目次参照を含んでいるとします。

import mlreportgen.dom.*;
d = Document('MyReport','docx','MyTemplate');

h1 = {FontFamily('Arial'),FontSize('16pt'),OutlineLevel(1)};
h2 = {FontFamily('Arial'),FontSize('14pt'),OutlineLevel(2)};
p = append(d,Paragraph('Chapter 1'));
p.Style = h1;
p = append(d,Paragraph('Section 1'));
p.Style = h2;

close(d);
rptview(d.OutputPath); % Updates the TOC

見出しオブジェクトを使用したアウトライン レベルの設定

mlreportgen.dom.Heading1 オブジェクト (および Heading2Heading3 など) を使用して、アウトライン レベルを指定できます。Heading1 オブジェクトは、コンストラクターによってアウトライン レベルを指定する段落です。Heading1 オブジェクトは、単体またはテンプレートベース/書式オブジェクトベースのスタイルと共に使用できます。この例では、テンプレート MyTemplate が目次参照を含んでいるとします。

import mlreportgen.dom.*;
d = Document('MyReport','docx','MyTemplate');

h1 = {FontFamily('Arial'),FontSize('16pt')};
h2 = {FontFamily('Arial'),FontSize('14pt')};
h = append(d,Heading1('Chapter 1'));
h.Style = h1;
h = append(d,Heading2('Section 1'));
p.Style = h2;

close(d);
rptview(d.OutputPath); % Updates the TOC

HTML および PDF レポートにおいて、Heading1 オブジェクトと Heading2 オブジェクトは HTML 要素 h1h2 を生成します。オブジェクト Heading1Heading2 などを使用することにより、レポートが既定の見出しのスタイルを確実に使用するようにできます。

参考

関数

クラス

関連するトピック