DOCX ファイルを直接読んでいる場合、段落の最初の行の左インデントを確認するにはどうすればよいですか? 特に箇条書きリストの場合は、非常に奇妙になる傾向があります。
1 に答える
これは、DOCX の Indent Positioning にも投稿されています (ここでは、私がここでできることよりもはるかに優れた書式設定があります)。
まず、プロパティ (インデントを含む) の最終状態を取得するには、仕様の §2.7.2 のスタイル階層規則に従う必要があります。
そこには、直接書式設定 (p 要素の下の pPr) がリスト定義のバージョンに取って代わることが正しく記載されています。
タブストップは付加的なものなので、それらをすべて集めるだけで、タブストップの完全なセットが得られます
がある場合、そのタブはクリアされ、タブとしてカウントされないだけでなく、同じ位置にあるすべての親タブ (スタイル、リスト) がクリアされます。
ここで、次のようにリストを表示します。
まず、numFmt 要素 §2.9.18 をチェックして、リスト定義内の数値の形式を確認します。
次に、テキストを lvlText 要素 §2.9.12 の最後の左インデントの位置に配置します。
numFmt が「bullet」でない場合は、%[1-9] 構文を適切に置き換える必要があります。
ここで、suff 要素 §2.9.30 を見て、箇条書きとテキストを分けているものを確認してください。
スペースまたは何もない場合は、スペースまたは何も追加しません。
タブの場合は、タブを追加します。(注: suff が設定されていない場合、これがデフォルトです!)
次に、次のタブ ストップが何であるかを知る必要があります。
そのために、表示されたレベル テキストの末尾の後のタブ ストップは有効です。
tab 要素で設定されたタブ
ぶら下げインデント (doNotUseIndentAsNumberingTabStop 要素 §2.15.3.2 が設定されていない場合)
デフォルトのタブは、defaultTabStop 要素 §2.15.1.24 によって設定された距離で停止します
最後に、レベルテキストの開始から行の終了まで、結果を正当化します。常に同じタブ ストップに対して相対的になるように、ここで正当化します。
もう 1 つ - ハンギング タブの使用は Word 2007+ (つまり、2007、2010 以降) でのみ発生します。これは 2007+ のデフォルトであるため、ちょっと奇妙です:
Word xml ファイルの場合、Word 2003 および 2007 以降の既定の動作では、仮想ハンギング タブが省略されます (Word 2007 以降の場合、Word でハンギング タブを有効にするオプションがあります)。
Word 2003 で開いた通常の Word 2003 doc ファイルの場合、仮想ハンギング タブは常に省略されます。
Word 2007+ で開いた通常の Word 2003 doc ファイルの場合、Word 2007+ は自動的に [箇条書きと番号付けのタブ位置としてぶら下げインデントを使用しない] オプションを設定し、ぶら下げインデントを省略します。
Word 2007+ で開いた通常の Word 2007+ docx ファイルの場合、Word 2007+ は既定で、箇条書きと番号付けのタブ トップとしてぶら下げインデントを使用します。
Word 2003 で開いた通常の Word 2007+ docx ファイルの場合、Word 2003 は仮想ハンギング タブを省略するため、ドキュメントの位置がずれることがあります。(KB http://support.microsoft.com/kb/937936を参照)
ただし、仮想ぶら下げインデントには別の注意点があります。RTF/DOC/WordML では (このルールは DOCX には適用されないことに注意してください)、仮想ぶら下げインデントのタブ位置が使用されます - リストにタブ位置が設定されていない場合に限ります。 、段落、またはスタイル (リスト/段落スタイル) を仮想位置の後に配置します。