Это также опубликовано в Позиционирование отступа в DOCX (где форматирование намного лучше, чем у меня здесь).
Во-первых, чтобы получить конечное состояние любого свойства (включая отступы), нам нужно следовать правилам иерархии стилей в §2.7.2 спецификации
Там правильно указано, что прямое форматирование (pPr под элементом p) заменяет версию в определении списка
Поскольку табуляции являются аддитивными, мы просто собираем их все вместе и имеем полный набор табов
Если есть, то эта вкладка очищается и не только не считается вкладкой, но и очищает любые родительские вкладки (стиль, список), которые находятся в той же позиции.
Теперь мы отображаем список следующим образом:
Сначала проверьте элемент numFmt §2.9.18, чтобы увидеть формат любых чисел в определении списка.
Затем поместите текст в элемент lvlText §2.9.12 в месте последнего левого отступа.
Если numFmt не является "маркером", нам нужно соответствующим образом заменить синтаксис% [1-9].
Теперь посмотрите на суффиксный элемент § 2.9.30, чтобы увидеть, что отличает маркер от текста.
Если это пробел или ничего, добавить пробел или ничего.
Если это вкладка, добавьте вкладку. (Примечание: это значение по умолчанию, если суффикс не установлен!)
Тогда нам просто нужно знать, какова следующая остановка табуляции.
Для этого допустима любая остановка табуляции после окончания отображаемого текста уровня:
Вкладки, установленные с помощью элемента tab
Любой висячий отступ (если не установлен элемент doNotUseIndentAsNumberingTabStop §2.15.3.2)
Вкладка по умолчанию останавливается на расстояниях, установленных элементом defaultTabStop §2.15.1.24
Наконец, мы обосновываем результат - от начала текста уровня до конца строки. Вы оправдываете теперь так, что это всегда относительно тех же самых позиций табуляции.
Еще одна вещь - вкладка «зависания» используется только в Word 2007+ (т.е. 2007, 2010 и более поздних версиях) - и это значение по умолчанию в 2007+, что делает ее немного странной:
Для файла Word xml стандартным поведением Word 2003 и 2007+ является исключение виртуальной вкладки «зависания» (если Word 2007+, у нас есть возможность включить вкладку «Висеть» в Word)
Для обычных документов Word 2003, открытых в Word 2003, вкладка виртуального зависания всегда опускается.
Для обычных файлов документов Word 2003, открытых в Word 2007+, Word 2007+ автоматически установит параметр «Не использовать висячий отступ в качестве табуляции для маркеров и нумерации» и пропустит висячий отступ.
Для обычных файлов Word 2007+ docx, открытых в Word 2007+, Word 2007+ будет использовать висячий отступ в качестве вкладки для маркеров и нумерации по умолчанию.
Для обычных файлов Word 2007+ docx, открытых в Word 2003, Word 2003 пропустит виртуальную вкладку зависания и, следовательно, может выровнять документ. (см. КБ http://support.microsoft.com/kb/937936)
Но есть еще одна оговорка в отношении виртуального отступа - в RTF / DOC / WordML (обратите внимание, что это правило не относится к DOCX) используется виртуальный стопорный отступ отступа - если и только если - нет установленных табуляции в списке, абзаце или стилях (стиль списка / абзаца) после виртуальной позиции.