Difference between revisions of "EN/Documentation/BASIC Guide/Structure of Text Documents"

From Apache OpenOffice Wiki
Jump to: navigation, search
(New page: {{DISPLAYTITLE:文書ドキュメントの\'8d\'5c造}} {{EN/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=Documentation/BASIC Guide/Text Documents |Next...)
 
Line 1: Line 1:
{{DISPLAYTITLE:文書ドキュメントの\'8d\'5c造}}
+
{{DISPLAYTITLE:Struttura dei documenti di testo}}
 
{{EN/Documentation/BASICGuideTOC/v2
 
{{EN/Documentation/BASICGuideTOC/v2
 
|ShowPrevNext=block
 
|ShowPrevNext=block
Line 8: Line 8:
 
}}
 
}}
 
   
 
   
文書ドキュメントには、以下の 4 種類の情報が記録されています。
+
Un documento di testo può contenere essenzialmente quattro tipi di informazioni:
  
* テキスト本体
+
* Il testo vero e proprio
* 文字、段落、ページを対象とした書式設定用テンプレート
+
* I modelli per la formattazione di caratteri, paragrafi e pagine
* テーブル、画像、図形描画オブジェクトなど、テキスト以外の要素
+
* Elementi non testuali quali tabelle, immagini e oggetti disegno
* 文書ドキュメント全体の設定
+
* Impostazioni globali per il documento di testo
  
本節では特に、テキストおよびその書式設定オプションについて説明します。
+
La presente sezione tratta in particolare il testo e le opzioni di formattazione associate.
  
== 段落と段落部位 ==
+
== Paragrafi e parti di paragrafi==
  
文書ドキュメントは、段落の集合であるとも言えます。しかしこのような段落は、個別的な名前やインデックスが付けられているわけでもないため、直接アクセスする方法はありません。その代わり段落へのアクセスは、「<tt>Enumeration API について</tt>」で説明されている [[Documentation/BASIC Guide/API Intro|Documentation/BASIC Guide/API Intro]] オブジェクトを用いた順次アクセスが行えます。段落を編集する場合は、このような機\'94\'5cを利用します。
+
Il nucleo di un documento di testo consiste in una sequenza di paragrafi non indicizzati a cui non è attribuito alcun nome, pertanto non esiste un metodo per accedere direttamente ai singoli paragrafi. I paragrafi si possono tuttavia vagliare sequenzialmente con l'ausilio dell'oggetto <tt>Enumeration</tt> descritto in [[Documentation/BASIC Guide/API Intro|Introduzione all'API]]. In questo modo, i paragrafi possono essere modificati.
  
ただし <tt>Enumeration</tt> オブジェクトで取得される対象には、段落だけでなくテーブルも含まれるので、注意が必要です ({{OOo}} Writer では、テーブルを特殊な段落として処理)。このため、取得したオブジェクトへアクセスする際には、そのオブジェクトが段落を示す <idl>com.sun.star.text.Paragraph</idl> サービスをサポートしているのか、テーブルを示す <idl>com.sun.star.text.TextTable</idl> サービスをサポートしているのかを確認する必要があります。
+
Quando si utilizza l'oggetto <tt>Enumeration</tt>, è necessario tenere presente il seguente scenario particolare: non restituisce solo paragrafi, ma anche tabelle (in senso stretto, in {{OOo}} Writer una tabella è uno speciale tipo di paragrafo). Prima di accedere a un oggetto restituito, dovete controllare se supporta il servizio <idl>com.sun.star.text.Paragraph</idl> per i paragrafi o il servizio <idl>com.sun.star.text.TextTable</idl> per le tabelle.
  
以下のサンプルコードでは、ループを使って文書ドキュメントの内容に順次アクセスして、各インスタンスごとに該当オブジェクトが段落であるかテーブルであるかを、メッセージ\'95\'5c示します。
+
L'esempio seguente vaglia i contenuti di un documento di testo in un ciclo e utilizza un messaggio in ogni istanza tramite cui l'utente può determinare se l'oggetto in questione è un paragrafo o una tabella.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 50: Line 50:
 
</source>
 
</source>
  
このサンプルコードでは、<tt>Doc</tt> というドキュメントオブジェクトを作成して、現在の {{OOo}} ドキュメントを参照しています。次にこの <tt>Doc</tt> オブジェクトを使って <tt>Enumeration</tt> オブジェクトを作成して、テキストの各部 (段落およびテーブル) に順次アクセスして、<tt>TextElement というオブジェクトに現在の要素を取得します。</tt>そして <tt>supportsService</tt> メ\'83\'5cッドを使って、<tt>TextElement</tt> の内容が段落かテーブルかを判定しています。
+
L'esempio crea un oggetto documento <tt>Doc</tt> che fa riferimento al documento di {{OOo}} attivo. Con l'ausilio di <tt>Doc</tt>, l'esempio crea un oggetto <tt>Enumeration</tt> che vaglia le singole parti del testo (paragrafi e tabelle) e assegna l'elemento attivo
 +
all'oggetto <tt>TextElement</tt>. In questo esempio viene usato il metodo <tt>supportsService</tt> per determinare se <tt>TextElement</tt> è un paragrafo o una tabella.
  
=== 段落 ===
+
=== Paragrafi ===
  
段落の内容にアクセスするには、<idl>com.sun.star.text.Paragraph</idl> サービスを使用します。そして段落中のテキストの取得および変更には、String 属性を使用します。
+
Il servizio <idl>com.sun.star.text.Paragraph</idl> garantisce l'accesso al contenuto di un paragrafo. Il testo nel paragrafo può essere recuperato e modificato utilizzando la proprietà String:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 76: Line 77:
 
</source>
 
</source>
  
このサンプルコードでは、現在の文書ドキュメントを開いて、その内容に Enumeration オブジェクトを用いて順次アクセスしています。そして各段落の <tt>TextElement.String</tt> 属性を使用して、<tt>you, too and for</tt> の各単語をそれぞれ <tt>U, 2 and 4</tt> の文字に置き換えていますなお、ここで使っている <tt>Replace</tt> という関数は、{{OOo}} Basic に用意されているものではありません。これは、「[[Documentation/BASIC Guide/Strings_%28Runtime_Library%29|検索と置換]]」で説明されている実行例です。
+
L'esempio apre il documento di testo attivo e lo analizza con l'ausilio dell'oggetto Enumeration. Utilizza la proprietà <tt>TextElement.String</tt> in tutti i paragrafi per accedere ai paragrafi pertinenti e sostituisce le stringhe <tt>you, too and for</tt> con i caratteri <tt>U, 2 and 4</tt>. La funzione <tt>Replace</tt> utilizzata per la sostituzione non rientra nella portata standard del linguaggio {{OOo}} Basic. Questo caso illustra la funzione di esempio descritta in [[Documentation/BASIC Guide/Strings_%28Runtime_Library%29|Ricerca e sostituzione]].
  
{{Documentation/Note|ここで説明した段落テキストへのアクセス手順は、VBA の場合の Paragraphs によるリスト作成に該当するもので、これらは <tt>Range</tt> および <tt>Document オブジェクトから使用できます。</tt>VBA の場合、段落へのアクセスは番号指定で行えますが (たとえば <tt>Paragraph(1)</tt> など){{OOo}} Basic 場合は、ここで説明した <tt>Enumeration</tt> オブジェクトを使用する必要があります。}}
+
{{Documentation/Note|Il contenuto della procedura qui descritta per accedere ai paragrafi di un testo è paragonabile all'elenco Paragraphs utilizzato in VBA, fornito negli oggetti <tt>Range</tt> e <tt>Document</tt> ivi disponibili. Mentre in VBA si accede ai paragrafi tramite i relativi numeri (ad esempio, mediante la chiamata <tt>Paragraph(1)</tt>), in {{OOo}} Basic è necessario utilizzare l'oggetto <tt>Enumeration</tt> descritto in precedenza. }}
  
VBA の {{OOo}} および <tt>Characters, Sentences</tt> リストに直接該当する機能は、<tt>Words</tt> Basic には用意されていません。ただし、<tt>TextCursor</tt> の機能を利用することで、文字、段落、ワード単位での操作を行えます。
+
Non esiste alcuna controparte in {{OOo}} Basic per gli elenchi <tt>Characters, Sentences</tt> e <tt>Words</tt> disponibili in VBA. Si ha tuttavia l'opzione di passare a <tt>TextCursor</tt>, che permette di spostarsi a livello di caratteri, frasi e parole.
  
=== 段落部位 ===
+
=== Parti di paragrafi ===
  
上記のサンプルコードを実行すると、テキストの置換は成功しても、書式設定が崩れるような場合があります。
+
L'esempio precedente può modificare il testo come richiesto, ma talvolta può anche distruggere la formattazione.
  
このような現象は、個々の段落が独立したサブオブジェクトから\'8d\'5c成されていることに原因があります。これら各サブオブジェクトは、独自の書式設定情報を保持しています。たとえば、中央部の 1 つの単語だけに太字の書式設定が行われた段落がある場合、{{OOo はこの段落を、太字テキストよりも前の部分、太字テキストの部分、太字テキストよりも後の通常テキストの部分という、3 つの段落部位として扱います。}}
+
Ciò avviene poiché un paragrafo è a sua volta formato da singoli sub-oggetti. Ciascuno di questi sub-oggetti contiene le relative informazioni di formattazione. Se il centro di un paragrafo, ad esempio, contiene una parola in grassetto, sarà rappresentata in {{OOo}} da tre parti di paragrafo: la parte prima del grassetto, la parola in grassetto e infine la parte dopo il grassetto, che è nuovamente raffigurata come normale.
  
この段落のテキストを <tt>String</tt> 属性を使って変更する場合、{{OOo}} は該当する段落部位をいったん削除してから新規に段落部位を挿入するという方法で処理を進めます。この際に、変更前の書式設定は失われてしまいます。
+
Se il testo del paragrafo viene ora modificato utilizzando la proprietà <tt>String</tt> del
 +
paragrafo, {{OOo}} elimina prima le vecchie parti del paragrafo e quindi inserisce una nuova parte del paragrafo. La formattazione delle sezioni precedenti va quindi persa.
  
このような現象を回避するには、段落全体ではなく該当する段落部位にアクセスするようにします。このような処理を行うため、各段落には <tt>Enumeration オブジェクトが用意されています。</tt>以下のサンプルコードは、先のサンプルコードと同様の置換処理を実行しますが、ここではループを二重にすることで、文書ドキュメント内のすべての段落および、各段落を\'8d\'5c成するすべての段落部位にアクセスするようにしています。
+
Per evitare ciò, l'utente può accedere alle parti di paragrafo associate invece che all'intero paragrafo. I paragrafi forniscono un oggetto <tt>Enumeration</tt> a parte a tale fine. L'esempio seguente mostra un doppio ciclo che vaglia tutti i paragrafi di un documento di testo e le parti di paragrafi in essi contenute, quindi applica i processi di sostituzione dell'esempio precedente:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 122: Line 124:
 
</source>
 
</source>
  
このサンプルコードでは、二重ループを使って文書ドキュメントの内容に順次アクセスしています。外周部のループは、段落単位のアクセスを担当しています。そして内周部のループは、各段落を\'8d\'5c成する段落部位のアクセスを担当しています。以下のサンプルコードでは、文字列の <tt>String</tt> 属性を使用して、各段落部位の内容を変更します。段落については、先のサンプルコードの場合と同じです。ただしこのサンプルコードでは、個々の段落部位ごとに変更するようにしているので、テキストの置換を行なっても書式設定情報は保持されます。
+
L'esempio viene eseguito su un documento di testo in un doppio ciclo. Il ciclo esterno fa riferimento ai paragrafi del testo. Il ciclo interno elabora invece le parti di paragrafo in tali paragrafi. Il codice di esempio modifica il contenuto in ciascuna di tali parti di paragrafo utilizzando la proprietà <tt>String</tt> della stringa, come nell'esempio precedente per i paragrafi. Tuttavia, dato che le parti di paragrafo sono modificate direttamente, le relative informazioni di formattazione vengono conservate quando si sostituisce la stringa.
  
===▼書式設定===
+
=== Formattazione ===
  
テキストの書式設定を行う方法は、複数あります。一番簡単な方法は、書式設定用属性をテキストに直接指定することです。このような方式は、ダイレクトフォー\'83\'7dッティングと呼ばれます。通常このようなダイレクトフォー\'83\'7dッティングが使われるのは、\'83\'7dウス操作による逐次的な書式設定が行えるような、比較的小さめのドキュメントです。より具体的に言えば、ユーザーが\'83\'7dウスを直接操作してテキスト内の特定の単語を太字にしたり、1 行だけを中央揃えにする場合が、これに該当します。
+
Esistono diversi modi per formattare un testo. Quello più semplice consiste nell'assegnare le proprietà di formattazione direttamente alla sequenza di testo ed è denominato formattazione diretta. La formattazione diretta è utilizzata soprattutto per i documenti brevi, poiché i formati possono essere assegnati dall'utente con il mouse. È possibile, ad esempio, evidenziare una determinata parola all'interno di un testo utilizzando lo stile grassetto oppure centrare una riga.
  
書式設定は、ダイレクトフォーマッティング以外にも、テンプレートを使って行うことができます。このような方式を、インダイレクトフォー\'83\'7dッティングと呼びます。インダイレクトフォー\'83\'7dッティングは、あらかじめ定義しておいたテンプレートを、該当テキストに適用することで実\'8e\'7bします。このようなテキストの書式設定を後から変更する場合は、テンプレートを変更するだけで済みます。{{OOo}}はテンプレートへの変更を、該当するすべてのテキストに対して一括適用します。
+
Oltre alla formattazione diretta, si possono formattare i testi anche utilizzando i modelli. Questa operazione è denominata formattazione indiretta. Con la formattazione indiretta, l'utente assegna un modello predefinito alla parte di testo pertinente. Se il layout del testo viene modificato in un secondo momento, l'utente deve pertanto modificare solo il modello. {{OOo}} modifica le modalità di raffigurazione di tutte le parti di testo che utilizzano tale modello.
  
{{Documentation/Note|通常 VBA では、書式設定用属性は複数のサブオブジェクトに分散しています (たとえば <tt>Range.Font</tt><tt>Range.Borders</tt><tt>Range.Shading</tt><tt>Range.ParagraphFormat</tt> など)これらの属性はカスケード式に指定します (たとえば <tt>Range.Font.AllCaps</tt>)。これに対して {{OOo}} Basic では、該当オブジェクトに対して書式設定用属性を直接指定できます (<tt>TextCursor, Paragraph</tt> など){{OOo}} に用意されている文字および段落関係の属性については、以下の 2 つの節で説明しています。}}
+
{{Documentation/Note|In VBA, le proprietà di formattazione di un oggetto sono generalmente distribuite in una vasta gamma di sub-oggetti (ad esempio, <tt>Range.Font</tt>, <tt>Range.Borders</tt>, <tt>Range.Shading</tt> e <tt>Range.ParagraphFormat</tt>). Si ha accesso alle proprietà tramite espressioni a cascata (ad esempio, <tt>Range.Font.AllCaps</tt>). In {{OOo}} Basic, le proprietà di formattazione sono invece disponibili direttamente grazie agli oggetti pertinenti (<tt>TextCursor, Paragraph</tt> e così
 +
via). Nelle due sezioni seguenti viene fornita una presentazione generale delle proprietà dei caratteri e dei paragrafi disponibili in {{OOo}}.}}
  
{{Documentation/Note|個々のオブジェクト (<tt>Paragraph, TextCursor</tt> など) に書式設定用の属性が用意されており、これらの指定を直接行えるようになっています。}}
+
{{Documentation/Note|Le proprietà di formattazione sono disponibili per ogni oggetto (<tt>Paragraph, TextCursor</tt> e così via) e possono essere applicate direttamente.}}
  
=== 文字属性 ===
+
=== Proprietà dei caratteri===
  
ここでは、個々の文字に対する書式設定属性を、文字属性と総称します。このようなものには、太字やフォントなどの書体指定が該当します。文字属性を使えるオブジェクトは、<idl>com.sun.star.style.CharacterProperties</idl> サービスをサポートしているものに限られます。{{OOo}} には、これに該当する各種のサービスが存在します。たとえば先に説明した、段落に対する <idl>com.sun.star.text.Paragraph</idl> サービスや、段落部位に対する <idl>com.sun.star.text.TextPortion</idl> サービスなども、その中に含まれます。
+
Le proprietà di formattazione che si riferiscono a singoli caratteri sono descritte come proprietà dei caratteri e includono il grassetto e il tipo di carattere. Gli oggetti che consentono l'impostazione delle proprietà dei caratteri devono supportare il servizio <idl>com.sun.star.style.CharacterProperties</idl>. {{OOo}} riconosce un'ampia gamma di servizi che supportano il servizio, tra cui i servizi <idl>com.sun.star.text.Paragraph</idl> di cui sopra per i paragrafi nonché i servizi <idl>com.sun.star.text.TextPortion</idl> per le parti dei paragrafi.
  
<idl>com.sun.star.style.CharacterProperties</idl> サービスは、何らかのインターフェースを提供するものではなく、文字属性の指定と取得を行う各種の属性を提供します。すべての文字属性のリストについては、{{ の「API reference」を参照してください。OOo}}以下に主要な属性を示します。
+
Il servizio <idl>com.sun.star.style.CharacterProperties</idl> non fornisce interfacce, ma offre una serie di proprietà attraverso le quali è possibile definire e richiamare le proprietà dei caratteri. Un elenco completo di tutte le proprietà dei caratteri è reperibile nel riferimento dell'API di {{OOo}}. L'elenco seguente descrive le proprietà più importanti:
  
;<tt>CharFontName (String)</tt>:選択したフォントの種類の名前。
+
;<tt>CharFontName (String)</tt>:Nome del tipo di carattere selezionato.
;<tt>CharColor (Long)</tt>:テキストの色。
+
;<tt>CharColor (Long)</tt>:Colore del testo.
;<tt>CharHeight (Float)</tt>:ポイント単位で指定した文字の高さ。
+
;<tt>CharHeight (Float)</tt>:Altezza del carattere in punti (pt).
;<tt>CharUnderline (Constant group)</tt>:下線の種類 (<idl>com.sun.star.awt.FontUnderline</idl> に定められた定数)
+
;<tt>CharUnderline (Constant group)</tt>:Tipo di trattino di sottolineatura (costanti conformi a <idl>com.sun.star.awt.FontUnderline</idl>).
;<tt>CharWeight (Constant group)</tt>:フォントの太さ (<idl>com.sun.star.awt.FontWeight</idl> に定められた定数)
+
;<tt>CharWeight (Constant group)</tt>:Spessore del carattere (costanti conformi a <idl>com.sun.star.awt.FontWeight</idl>).
;<tt>CharBackColor (Long)</tt>:背景色。
+
;<tt>CharBackColor (Long)</tt>:Colore di sfondo.
;<tt>CharKeepTogether (Boolean)</tt>:自動行ブレークを抑制する指定。
+
;<tt>CharKeepTogether (Boolean)</tt>:Soppressione del testo a capo automatico.
;<tt>CharStyleName (String)</tt>:文字テンプレートの名前。
+
;<tt>CharStyleName (String)</tt>:Nome del modello di carattere.
  
=== 段落属性 ===
+
=== Proprietà dei paragrafi ===
  
個々の文字に対してではなく、段落全体に対して施される書式設定の情報は、段落属性と総称されます。このような情報としては、用紙と段落の間の余白や行間の大きさなどが該当します。段落属性は、<idl>com.sun.star.style.ParagraphProperties</idl> サービスを通じて使用します。
+
Le informazioni di formattazione che non fanno riferimento a singoli caratteri bensì all'intero paragrafo sono considerate proprietà del paragrafo. Includono la distanza del paragrafo dal bordo della pagina nonché l'interlinea. Le proprietà dei paragrafi sono disponibili tramite il servizio <idl>com.sun.star.style.ParagraphProperties</idl>.
  
段落属性は、各種のオブジェクトで利用できます。<idl>com.sun.star.text.Paragraph</idl> サービスをサポートするすべてのオブジェクトは、<idl>com.sun.star.style.ParagraphProperties</idl> の段落属性もサポートしています。
+
Anche le proprietà dei paragrafi sono disponibili in diversi oggetti. Tutti gli oggetti che supportano il servizio <idl>com.sun.star.text.Paragraph</idl> garantiscono anche il supporto delle proprietà dei paragrafi in <idl>com.sun.star.style.ParagraphProperties</idl>.
  
すべての段落属性のリストについては、『{{OOo}}API reference』を参照してください。以下に主要な段落属性を示します。
+
Un elenco completo di tutte le proprietà dei paragrafi è reperibile nel riferimento dell'API di {{OOo}}. Le proprietà dei paragrafi di uso più comune sono le seguenti:
  
;<tt>ParaAdjust (enum)</tt>:垂直の文字の方向 (<idl>com.sun.star.style.ParagraphAdjust</idl> に定められた定数)
+
;<tt>ParaAdjust (enum)</tt>:Orientamento verticale del testo (costanti conformi a <idl>com.sun.star.style.ParagraphAdjust</idl>).
;<tt>ParaLineSpacing (struct)</tt>:行間 (<idl>com.sun.star.style.LineSpacing</idl> に定められた構造体)
+
;<tt>ParaLineSpacing (struct)</tt>:Interlinea (struttura conforme a <idl>com.sun.star.style.LineSpacing</idl>).
;<tt>ParaBackColor (Long)</tt>:背景色。
+
;<tt>ParaBackColor (Long)</tt>:Colore di sfondo.
;<tt>ParaLeftMargin (Long)</tt>:100 分の 1 ミリ単位で指定した左マージン。
+
;<tt>ParaLeftMargin (Long)</tt>:Margine sinistro in centesimi di millimetro.
;<tt>ParaRightMargin (Long)</tt>:100 分の 1 ミリ単位で指定した右マージン。
+
;<tt>ParaRightMargin (Long)</tt>:Margine destro in centesimi di millimetro.
;<tt>ParaTopMargin (Long)</tt>:100 分の 1 ミリ単位で指定した上マージン。
+
;<tt>ParaTopMargin (Long)</tt>:Margine superiore in centesimi di millimetro.
;<tt>ParaBottomMargin (Long)</tt>:100 分の 1 ミリ単位で指定した下マージン。
+
;<tt>ParaBottomMargin (Long)</tt>:Margine inferiore in centesimi di millimetro.
;<tt>ParaTabStops (Array of struct)</tt>:タブの種類と位置 (Typs 構造 <idl>com.sun.star.style.TabStop</idl> を持つ配列)
+
;<tt>ParaTabStops (Array of struct)</tt>:Tipo e posizione delle tabulazioni (matrice con strutture di Typs <idl>com.sun.star.style.TabStop</idl>).
;<tt>ParaStyleName (String)</tt>:段落テンプレートの名前。
+
;<tt>ParaStyleName (String)</tt>:Nome del modello del paragrafo.
  
=== : HTML の簡易エクスポート ===
+
=== Esempio: esportazione in un file HTML semplice ===
  
以下のサンプルコードは、書式設定情報の操作例です。ここでは、文書ドキュメントを順次読み取り、HTML 形式ファイルへの簡易的な変換を行なっています。基本的な変換処理としては、個々の段落の先頭に HTML タグの <tt><nowiki><P></nowiki></tt> を付加します。同様に、太字指定のされた段落部位には HTML タグの <tt><nowiki><B></nowiki></tt> を付けるよう処理しています。
+
L'esempio seguente mostra come utilizzare le informazioni di formattazione eseguendo un'iterazione nel documento di testo e creando un semplice file HTML. A tal fine, ogni paragrafo è registrato in un elemento HTML <tt><nowiki><P></nowiki></tt> a parte. Durante l'esportazione, le parti di paragrafo visualizzate in grassetto sono contrassegnate per mezzo dell'elemento HTML <tt><nowiki><B></nowiki></tt>.
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 216: Line 219:
 
</source>
 
</source>
  
このサンプルコードの基\'96\'7b\'8d\'5c造は、先に説明した段落部位へアクセスするサンプルコードと同じものです。今回追加されたものは、HTML ファイルの書き出し処理および、テキストが太字であるかをチェックして該当する段落部位を HTML タグで囲むよう処理するコードです。
+
La struttura base dell'esempio è orientata agli esempi per l'esecuzione su parti di paragrafi di un testo già presentato in precedenza. Sono state aggiunte le funzioni per scrivere il file HTML, nonché un codice di prova che controlla lo spessore del carattere delle parti di testo corrispondenti e assegna alle parti del paragrafo in grassetto un tag HTML.
  
=== 文字と段落属性のデフォルト値 ===
+
=== Valori predefiniti per le proprietà di caratteri e paragrafi ===
  
'''「ダイレクト」フォーマッティングは、常に'''「インダイレクト」フォーマッティングに優先します。これはつまりテンプレートによる書式設定よりも、テキストへの直接操作による書式設定の方が優先されるということになります。
 
  
ドキュメントの特定セクションが、ダイレクトフォー\'83\'7dッティングされたのか、インダイレクトフォー\'83\'7dッティングされたのかは、簡単には確認できません。{{ のオブジェクトバーには、\'96\'7b文テキストに設定されたフォント、太さ、サイズなどの属性が\'95\'5c示されます。OOo}}しかし、このような書式設定がテンプレートによるものか、直接設定したものかについては\'95\'5c示されません。
+
                    La formattazione '''diretta ha sempre la priorità rispetto alla formattazione '''indiretta. In altre parole, alla formattazione tramite modelli è assegnata un priorità inferiore rispetto alla formattazione diretta in un testo.
  
 +
Determinare se una sezione di un documento è stata formattata in modo diretto o indiretto non è compito facile. Le barre dei simboli fornite da {{OOo}} mostrano le proprietà di testo comuni quali tipo di carattere, spessore e dimensioni. Tuttavia, non chiariscono se le impostazioni corrispondenti sono basate su modelli o sulla formattazione diretta del testo.
  
                    特定の属性については、{{OOo}} Basic <tt>getPropertyState</tt> メソッドを使うことで、どのように書式設定されているかを確認することができます。この場合に渡すパラメータには属性名を指定し、戻り値としては書式設定の出所を示す定数が返されます。このような定数としては、<idl>com.sun.star.beans.PropertyState</idl> に定義された以下の値が使われます。
+
{{OOo}} Basic mette a disposizione il metodo <tt>getPropertyState</tt>, con il quale i programmatori possono controllare come è stata formattata una determinata proprietà. Come parametro, questo assume il nome della proprietà e restituisce una costante che fornisce informazioni sull'origine della formattazione. Sono possibili le risposte seguenti, definite nell'enumerazione di <idl>com.sun.star.beans.PropertyState</idl>:
  
;<idl>com.sun.star.beans.PropertyState.DIRECT_VALUE</idl>:テキストへの直接操作により設定された属性 (ダイレクトフォーマッティング)
+
;<idl>com.sun.star.beans.PropertyState.DIRECT_VALUE</idl>:La proprietà è definita direttamente nel testo (formattazione diretta)
;<idl>com.sun.star.beans.PropertyState.DEFAULT_VALUE</idl>:テンプレートにより設定された属性 (インダイレクトフォーマッティング)
+
;<idl>com.sun.star.beans.PropertyState.DEFAULT_VALUE</idl>:La proprietà è definita tramite un modello (formattazione indiretta)
;<idl>com.sun.star.beans.PropertyState.AMBIGUOUS_VALUE</idl>:属性が不明確。このような状況が発生するのは、たとえばプレーンテキストと太字テキストの部分が混在する段落で、太字テキストの部分を調べようとした場合などです。
+
;<idl>com.sun.star.beans.PropertyState.AMBIGUOUS_VALUE</idl>:L'origine della proprietà non è chiara. Questo stato si presenta, ad esempio, quando si ricerca la proprietà grassetto di un paragrafo, che include sia le parole riportate in grassetto che quelle in caratteri normali.
  
以下のサンプルコードでは、書式設定用属性が {{OOo}} 内でどのように編集されているかを調べます。ここでは、個々の段落部位にダイレクトフォー\'83\'7dッティングにより太字にされたものがあるかをチェックします。そして該当する段落部位があると、<tt>setPropertyToDefault</tt> メ\'83\'5cッドを用いてダイレクトフォー\'83\'7dッティングによる書式指定を解除して、<tt>MyBold</tt> という文字テンプレートを適用させています。
+
L'esempio seguente mostra come modificare le proprietà di formattazione in {{OOo}}. Ricerca all'interno del testo le parti dei paragrafi che sono state rappresentate come grassetto utilizzando la formattazione diretta. Se individua una parte di paragrafo corrispondente, elimina la formattazione diretta utilizzando il metodo <tt>setPropertyToDefault</tt> e assegna un modello di carattere <tt>MyBold</tt> alla parte di paragrafo corrispondente.
  
 
<source lang="oobas">
 
<source lang="oobas">

Revision as of 18:22, 25 June 2009

Template:EN/Documentation/BASICGuideTOC/v2

Un documento di testo può contenere essenzialmente quattro tipi di informazioni:

  • Il testo vero e proprio
  • I modelli per la formattazione di caratteri, paragrafi e pagine
  • Elementi non testuali quali tabelle, immagini e oggetti disegno
  • Impostazioni globali per il documento di testo

La presente sezione tratta in particolare il testo e le opzioni di formattazione associate.

Paragrafi e parti di paragrafi

Il nucleo di un documento di testo consiste in una sequenza di paragrafi non indicizzati a cui non è attribuito alcun nome, pertanto non esiste un metodo per accedere direttamente ai singoli paragrafi. I paragrafi si possono tuttavia vagliare sequenzialmente con l'ausilio dell'oggetto Enumeration descritto in Introduzione all'API. In questo modo, i paragrafi possono essere modificati.

Quando si utilizza l'oggetto Enumeration, è necessario tenere presente il seguente scenario particolare: non restituisce solo paragrafi, ma anche tabelle (in senso stretto, in Apache OpenOffice Writer una tabella è uno speciale tipo di paragrafo). Prima di accedere a un oggetto restituito, dovete controllare se supporta il servizio com.sun.star.text.Paragraph per i paragrafi o il servizio com.sun.star.text.TextTable per le tabelle.

L'esempio seguente vaglia i contenuti di un documento di testo in un ciclo e utilizza un messaggio in ogni istanza tramite cui l'utente può determinare se l'oggetto in questione è un paragrafo o una tabella.

Dim Doc As Object
Dim Enum As Object
Dim TextElement As Object
 
' Create document object   
Doc = StarDesktop.CurrentComponent
' Create enumeration object 
Enum = Doc.Text.createEnumeration
' loop over all text elements
 
While Enum.hasMoreElements
  TextElement = Enum.nextElement
 
  If TextElement.supportsService("com.sun.star.text.TextTable") Then
    MsgBox "The current block contains a table."
  End If
 
  If TextElement.supportsService("com.sun.star.text.Paragraph") Then
    MsgBox "The current block contains a paragraph."
  End If
 
Wend

L'esempio crea un oggetto documento Doc che fa riferimento al documento di Apache OpenOffice attivo. Con l'ausilio di Doc, l'esempio crea un oggetto Enumeration che vaglia le singole parti del testo (paragrafi e tabelle) e assegna l'elemento attivo all'oggetto TextElement. In questo esempio viene usato il metodo supportsService per determinare se TextElement è un paragrafo o una tabella.

Paragrafi

Il servizio com.sun.star.text.Paragraph garantisce l'accesso al contenuto di un paragrafo. Il testo nel paragrafo può essere recuperato e modificato utilizzando la proprietà String:

Dim Doc As Object
Dim Enum As Object
Dim TextElement As Object
 
Doc = StarDesktop.CurrentComponent
Enum = Doc.Text.createEnumeration
 
While Enum.hasMoreElements
  TextElement = Enum.nextElement
 
  If TextElement.supportsService("com.sun.star.text.Paragraph") Then
    TextElement.String = Replace(TextElement.String, "you", "U") 
    TextElement.String = Replace(TextElement.String, "too", "2")
    TextElement.String = Replace(TextElement.String, "for", "4") 
  End If
 
Wend

L'esempio apre il documento di testo attivo e lo analizza con l'ausilio dell'oggetto Enumeration. Utilizza la proprietà TextElement.String in tutti i paragrafi per accedere ai paragrafi pertinenti e sostituisce le stringhe you, too and for con i caratteri U, 2 and 4. La funzione Replace utilizzata per la sostituzione non rientra nella portata standard del linguaggio Apache OpenOffice Basic. Questo caso illustra la funzione di esempio descritta in Ricerca e sostituzione.

Template:Documentation/Note

Non esiste alcuna controparte in Apache OpenOffice Basic per gli elenchi Characters, Sentences e Words disponibili in VBA. Si ha tuttavia l'opzione di passare a TextCursor, che permette di spostarsi a livello di caratteri, frasi e parole.

Parti di paragrafi

L'esempio precedente può modificare il testo come richiesto, ma talvolta può anche distruggere la formattazione.

Ciò avviene poiché un paragrafo è a sua volta formato da singoli sub-oggetti. Ciascuno di questi sub-oggetti contiene le relative informazioni di formattazione. Se il centro di un paragrafo, ad esempio, contiene una parola in grassetto, sarà rappresentata in Apache OpenOffice da tre parti di paragrafo: la parte prima del grassetto, la parola in grassetto e infine la parte dopo il grassetto, che è nuovamente raffigurata come normale.

Se il testo del paragrafo viene ora modificato utilizzando la proprietà String del paragrafo, Apache OpenOffice elimina prima le vecchie parti del paragrafo e quindi inserisce una nuova parte del paragrafo. La formattazione delle sezioni precedenti va quindi persa.

Per evitare ciò, l'utente può accedere alle parti di paragrafo associate invece che all'intero paragrafo. I paragrafi forniscono un oggetto Enumeration a parte a tale fine. L'esempio seguente mostra un doppio ciclo che vaglia tutti i paragrafi di un documento di testo e le parti di paragrafi in essi contenute, quindi applica i processi di sostituzione dell'esempio precedente:

Dim Doc As Object
Dim Enum1 As Object
Dim Enum2 As Object
Dim TextElement As Object
Dim TextPortion As Object
 
Doc = StarDesktop.CurrentComponent
Enum1 = Doc.Text.createEnumeration
 
' loop over all paragraphs
While Enum1.hasMoreElements
  TextElement = Enum1.nextElement
 
  If TextElement.supportsService("com.sun.star.text.Paragraph") Then
    Enum2 = TextElement.createEnumeration
    ' loop over all sub-paragraphs 
 
    While Enum2.hasMoreElements
      TextPortion = Enum2.nextElement
      MsgBox "'" & TextPortion.String & "'"
      TextPortion.String = Replace(TextPortion.String, "you", "U") 
      TextPortion.String = Replace(TextPortion.String, "too", "2")
      TextPortion.String = Replace(TextPortion.String, "for", "4") 
    Wend
 
  End If
Wend

L'esempio viene eseguito su un documento di testo in un doppio ciclo. Il ciclo esterno fa riferimento ai paragrafi del testo. Il ciclo interno elabora invece le parti di paragrafo in tali paragrafi. Il codice di esempio modifica il contenuto in ciascuna di tali parti di paragrafo utilizzando la proprietà String della stringa, come nell'esempio precedente per i paragrafi. Tuttavia, dato che le parti di paragrafo sono modificate direttamente, le relative informazioni di formattazione vengono conservate quando si sostituisce la stringa.

Formattazione

Esistono diversi modi per formattare un testo. Quello più semplice consiste nell'assegnare le proprietà di formattazione direttamente alla sequenza di testo ed è denominato formattazione diretta. La formattazione diretta è utilizzata soprattutto per i documenti brevi, poiché i formati possono essere assegnati dall'utente con il mouse. È possibile, ad esempio, evidenziare una determinata parola all'interno di un testo utilizzando lo stile grassetto oppure centrare una riga.

Oltre alla formattazione diretta, si possono formattare i testi anche utilizzando i modelli. Questa operazione è denominata formattazione indiretta. Con la formattazione indiretta, l'utente assegna un modello predefinito alla parte di testo pertinente. Se il layout del testo viene modificato in un secondo momento, l'utente deve pertanto modificare solo il modello. Apache OpenOffice modifica le modalità di raffigurazione di tutte le parti di testo che utilizzano tale modello.

Template:Documentation/Note

Template:Documentation/Note

Proprietà dei caratteri

Le proprietà di formattazione che si riferiscono a singoli caratteri sono descritte come proprietà dei caratteri e includono il grassetto e il tipo di carattere. Gli oggetti che consentono l'impostazione delle proprietà dei caratteri devono supportare il servizio com.sun.star.style.CharacterProperties. Apache OpenOffice riconosce un'ampia gamma di servizi che supportano il servizio, tra cui i servizi com.sun.star.text.Paragraph di cui sopra per i paragrafi nonché i servizi com.sun.star.text.TextPortion per le parti dei paragrafi.

Il servizio com.sun.star.style.CharacterProperties non fornisce interfacce, ma offre una serie di proprietà attraverso le quali è possibile definire e richiamare le proprietà dei caratteri. Un elenco completo di tutte le proprietà dei caratteri è reperibile nel riferimento dell'API di Apache OpenOffice. L'elenco seguente descrive le proprietà più importanti:

CharFontName (String)
Nome del tipo di carattere selezionato.
CharColor (Long)
Colore del testo.
CharHeight (Float)
Altezza del carattere in punti (pt).
CharUnderline (Constant group)
Tipo di trattino di sottolineatura (costanti conformi a com.sun.star.awt.FontUnderline).
CharWeight (Constant group)
Spessore del carattere (costanti conformi a com.sun.star.awt.FontWeight).
CharBackColor (Long)
Colore di sfondo.
CharKeepTogether (Boolean)
Soppressione del testo a capo automatico.
CharStyleName (String)
Nome del modello di carattere.

Proprietà dei paragrafi

Le informazioni di formattazione che non fanno riferimento a singoli caratteri bensì all'intero paragrafo sono considerate proprietà del paragrafo. Includono la distanza del paragrafo dal bordo della pagina nonché l'interlinea. Le proprietà dei paragrafi sono disponibili tramite il servizio com.sun.star.style.ParagraphProperties.

Anche le proprietà dei paragrafi sono disponibili in diversi oggetti. Tutti gli oggetti che supportano il servizio com.sun.star.text.Paragraph garantiscono anche il supporto delle proprietà dei paragrafi in com.sun.star.style.ParagraphProperties.

Un elenco completo di tutte le proprietà dei paragrafi è reperibile nel riferimento dell'API di Apache OpenOffice. Le proprietà dei paragrafi di uso più comune sono le seguenti:

ParaAdjust (enum)
Orientamento verticale del testo (costanti conformi a com.sun.star.style.ParagraphAdjust).
ParaLineSpacing (struct)
Interlinea (struttura conforme a com.sun.star.style.LineSpacing).
ParaBackColor (Long)
Colore di sfondo.
ParaLeftMargin (Long)
Margine sinistro in centesimi di millimetro.
ParaRightMargin (Long)
Margine destro in centesimi di millimetro.
ParaTopMargin (Long)
Margine superiore in centesimi di millimetro.
ParaBottomMargin (Long)
Margine inferiore in centesimi di millimetro.
ParaTabStops (Array of struct)
Tipo e posizione delle tabulazioni (matrice con strutture di Typs com.sun.star.style.TabStop).
ParaStyleName (String)
Nome del modello del paragrafo.

Esempio: esportazione in un file HTML semplice

L'esempio seguente mostra come utilizzare le informazioni di formattazione eseguendo un'iterazione nel documento di testo e creando un semplice file HTML. A tal fine, ogni paragrafo è registrato in un elemento HTML <P> a parte. Durante l'esportazione, le parti di paragrafo visualizzate in grassetto sono contrassegnate per mezzo dell'elemento HTML <B>.

Dim FileNo As Integer, Filename As String, CurLine As String
Dim Doc As Object   
Dim Enum1 As Object, Enum2 As Object
Dim TextElement As Object, TextPortion As Object
 
Filename = "c:\text.html"
FileNo = Freefile
Open Filename For Output As #FileNo   
Print #FileNo, "<HTML><BODY>"
Doc = StarDesktop.CurrentComponent
Enum1 = Doc.Text.createEnumeration
 
' loop over all paragraphs
While Enum1.hasMoreElements
 TextElement = Enum1.nextElement
 
 If TextElement.supportsService("com.sun.star.text.Paragraph") Then
   Enum2 = TextElement.createEnumeration
   CurLine = "<P>"
 
    ' loop over all paragraph portions
   While Enum2.hasMoreElements
     TextPortion = Enum2.nextElement
 
     If TextPortion.CharWeight = com.sun.star.awt.FontWeight.BOLD THEN
       CurLine = CurLine & "<B>" & TextPortion.String & "</B>"
      Else
        CurLine = CurLine & TextPortion.String
      End If
 
     Wend
 
    ' output the line
     CurLine = CurLine & "</P>"
     Print #FileNo, CurLine
   End If
 
 Wend
 
' write HTML footer 
Print #FileNo, "</BODY></HTML>"
Close #FileNo

La struttura base dell'esempio è orientata agli esempi per l'esecuzione su parti di paragrafi di un testo già presentato in precedenza. Sono state aggiunte le funzioni per scrivere il file HTML, nonché un codice di prova che controlla lo spessore del carattere delle parti di testo corrispondenti e assegna alle parti del paragrafo in grassetto un tag HTML.

Valori predefiniti per le proprietà di caratteri e paragrafi

                   La formattazione diretta ha sempre la priorità rispetto alla formattazione indiretta. In altre parole, alla formattazione tramite modelli è assegnata un priorità inferiore rispetto alla formattazione diretta in un testo.

Determinare se una sezione di un documento è stata formattata in modo diretto o indiretto non è compito facile. Le barre dei simboli fornite da Apache OpenOffice mostrano le proprietà di testo comuni quali tipo di carattere, spessore e dimensioni. Tuttavia, non chiariscono se le impostazioni corrispondenti sono basate su modelli o sulla formattazione diretta del testo.

Apache OpenOffice Basic mette a disposizione il metodo getPropertyState, con il quale i programmatori possono controllare come è stata formattata una determinata proprietà. Come parametro, questo assume il nome della proprietà e restituisce una costante che fornisce informazioni sull'origine della formattazione. Sono possibili le risposte seguenti, definite nell'enumerazione di com.sun.star.beans.PropertyState:

com.sun.star.beans.PropertyState.DIRECT_VALUE
La proprietà è definita direttamente nel testo (formattazione diretta)
com.sun.star.beans.PropertyState.DEFAULT_VALUE
La proprietà è definita tramite un modello (formattazione indiretta)
com.sun.star.beans.PropertyState.AMBIGUOUS_VALUE
L'origine della proprietà non è chiara. Questo stato si presenta, ad esempio, quando si ricerca la proprietà grassetto di un paragrafo, che include sia le parole riportate in grassetto che quelle in caratteri normali.

L'esempio seguente mostra come modificare le proprietà di formattazione in Apache OpenOffice. Ricerca all'interno del testo le parti dei paragrafi che sono state rappresentate come grassetto utilizzando la formattazione diretta. Se individua una parte di paragrafo corrispondente, elimina la formattazione diretta utilizzando il metodo setPropertyToDefault e assegna un modello di carattere MyBold alla parte di paragrafo corrispondente.

Dim Doc As Object
Dim Enum1 As Object
Dim Enum2 As Object
Dim TextElement As Object
Dim TextPortion As Object
 
Doc = StarDesktop.CurrentComponent
Enum1 = Doc.Text.createEnumeration
 
' loop over all paragraphs
While Enum1.hasMoreElements
  TextElement = Enum1.nextElement
 
 If TextElement.supportsService("com.sun.star.text.Paragraph") Then
    Enum2 = TextElement.createEnumeration
    ' loop over all paragraph portions
 
 While Enum2.hasMoreElements
      TextPortion = Enum2.nextElement
 
      If TextPortion.CharWeight = _
        com.sun.star.awt.FontWeight.BOLD AND _
        TextPortion.getPropertyState("CharWeight") = _
        com.sun.star.beans.PropertyState.DIRECT_VALUE Then
        TextPortion.setPropertyToDefault("CharWeight")
        TextPortion.CharStyleName = "MyBold" 
      End If
    Wend
  End If
Wend
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools