1

Тема: Ненормализированный многоуровневый список, как?

Добрый день.
Недавно наткнулся на статью на этом сайте, в которой рассказывалось как создавать многоуровневые списки типа
Ненормализированный многоуровневый список, как?

Достаточно давно занимаюсь созданием документов, в частности Технических Заданий, и из раза в раз возникает более сложная ситуация, описываемая следующим образом:

1) Нужно нумеровать не только заголовки, но и текст.
2) Текст сам по себе имеет несколко уровней вложенности.
3) Уровни заголовков, как правило, не сдвинуты относительно друг друга, уровни текстовых структур наоборот, как правило, сдвинуты.
4) Структура заголовков ненормализованна.

Последнее означает, что текст может быть на любом уровне списка, а не только на последнем.
В идеале хотелось бы иметь возможность получать структуры следуюшего вида:

Ненормализированный многоуровневый список, как?

Это возможно?

Приносить в жертву логику структуры документа и придумывать  "псевдозаголовки" считаю нецелесообразным. Вариант, когда уровень текста сдвигается более чем на один уровень от заголовка мне кажется некрасивым и не вполне правильным логически.

2

Re: Ненормализированный многоуровневый список, как?

Уже есть. В понедельник могу скинуть

3

Re: Ненормализированный многоуровневый список, как?

2andrkar:

Был бы благодарен за решение...

4

Re: Ненормализированный многоуровневый список, как?

Сегодня не было инета на работе((( завтра будет

5

Re: Ненормализированный многоуровневый список, как?

Вот, принимай

Отредактировано andrkar (04.09.2012 08:03:57)

Post's attachments

ИН 061-2008_v02.dot 829 Кб, 98 скачиваний с 2012-09-04 

You don't have the permssions to download the attachments of this post.

6

Re: Ненормализированный многоуровневый список, как?

andrkar пишет:

Вот, принимай

Правильно ли я понимаю, Андрей Радиевич, что стили типа Пункт, по сути, - это все равно заголовки уровня 4, 5 и т.д., но они исключаются из оглавления?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

7

Re: Ненормализированный многоуровневый список, как?

да, понимаешь правильно.
Если надо будет им включить то это делается просто)))
И стили Пункт 2-5 это не слили Заголовков, а там где идет текст

8

Re: Ненормализированный многоуровневый список, как?

andrkar пишет:

Вот, принимай

Спасибо большое. Основная проблема решена. Как то не приходило в голову, что при наследовании заголовка нумерация тоже наследуется..

Было бы ещё неплохо со относительным сдвигом пунктов как то вопрос решить. Но тут впринципе можно и руками подвигать. Или если уж совсем заморачиваться можно создать стили типа "Пункт один в заголовке H1", "Пункт два в заголовке H1","Пункт один в заголовке H2" и т.д. Ну это уже для параноиков... wink

9

Re: Ненормализированный многоуровневый список, как?

andrkar пишет:

да, понимаешь правильно.
Если надо будет им включить то это делается просто)))
И стили Пункт 2-5 это не слили Заголовков, а там где идет текст

Я имею в виду, что стили Пункт 2-5 формируются на основе соответствующих стилей заголовков и в окне Абзац имеют, соответственно, уровни 2-5. Разве не так?

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

10

Re: Ненормализированный многоуровневый список, как?

Не понял((( Скажу что много писать пока не могу. Голова и руки пока не полностью слушаются(

11

Re: Ненормализированный многоуровневый список, как?

Haanz пишет:

Спасибо большое. Основная проблема решена. Как то не приходило в голову, что при наследовании заголовка нумерация тоже наследуется..

Было бы ещё неплохо со относительным сдвигом пунктов как то вопрос решить. Но тут в принципе можно и руками подвигать.

Сдвиг вы можете задать, изменяя стили Пункт 2 - Пункт 5.
Сделать это можно так:
1) подводим курсор мыши к нужному стилю;
2) открываем контекстное меню (щелчок правой кнопки мыши);
3) в контекстном меню выбираем пункт Изменить (открывается окно Изменение стиля);
4) в этом окне нажимаем кнопку Формат;
5) в открывшемся списке выбираем команду Абзац;
6) далее по своему усмотрению изменяете параметры в группе Отступ и сохраняете выполненные изменения.

Обратите внимание, что в окне Изменение стиля у вас должна стоять галочка Обновлять автоматически.

Если возникнут проблемы - пишите.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

12

Re: Ненормализированный многоуровневый список, как?

andrkar пишет:

Не понял((( Скажу что много писать пока не могу. Голова и руки пока не полностью слушаются(

Потихоньку нам куда спешить, Андрей Радиевич. Я как 2 года назад бился с автотекстом, так и бьюсь до сих пор...Версии меняются, проблемы остаются... smile lol
Вы мне в своё время помогали...Только тогда вроде благодарить нельзя было или я с перепугу не замечал  smile

Yeah, really?

13

Re: Ненормализированный многоуровневый список, как?

Alex_Gur пишет:

Сдвиг вы можете задать, изменяя стили Пункт 2 - Пункт 5.

Боюсь что не выйдет. Списки ненормализованные (см. выше). Предсказать на каком уровне будет тот или иной элемент нельзя.

14

Re: Ненормализированный многоуровневый список, как?

А какая разница??? Есть стиль Абзац. Он без нумерации.

15

Re: Ненормализированный многоуровневый список, как?

andrkar пишет:

А какая разница??? Есть стиль Абзац. Он без нумерации.

Немного не поняли наверное.

Хотелось бы чтобы текстовые блоки автоматически сдвигались друг относительно друга:

1.1. ххх
     1.1.1 xxx

или

1.1.1 xxx
     1.1.1.1 xxx

Впрочем по сравнению с самой задачей нумерации сдвиг это гораздо менее трудоемкая задача. Можно и руками обойтись.

16

Re: Ненормализированный многоуровневый список, как?

andrkar пишет:

Вот, принимай

Этот документ меня просто шокирует.

Основная ошибка - для заголовков НЕ сделано отдельного стиля списка. Надо создавать стиль списка и к его уровням привязывать заголовки. Если девяти уровней не хватает, можно сделать два стиля списка. Тут могут быть разные варианты, но стили списка надо обязательно делать. А andrkar использует шаблоны списка.

Мне лень разбираться почему для нумерации рисунков в приложениях используется множество подписей названий, типа:
Рисунок А.
Рисунок Б.
Рисунок В.
и т.д.
Но это явно неправильно, потому что легко можно обойтись одной подписью. Подозреваю, что это из-за неправильной нумерации заголовков, иначе можно было бы включить номер главы.

Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

17

Re: Ненормализированный многоуровневый список, как?

Вернее меня шокируют не стили конечно, а подход к нумерации рисунков, таблиц и формул. Это просто садизм какой-то.

Можно было бы сделать следующим образом. Я даю намек, т.к. полное описание будет очень объемным.

1) Создаем стиль списка "Список для основных разделов"
Первые восемь уровней списка связываем со встроенными стилями заголовков "Заголовок 1" - "Заголовок 8". Уровень 9 не трогаем. Нечетные уровни (4 шт) это собственно заголовки, четные уровни (4 шт) это "пункты" (т.е. нумерованные абзацы).

2) Создаем стили абзаца для заголовков приложений:
"Заголовок приложения 2"
"Заголовок приложения 3"
"Заголовок приложения 4"
и т.д.

3) Создаем стиль списка "Список для заголовков приложений"
Первый уровень связываем со стилем "Заголовок 9"
Остальные уровни связываем со стилями "Заголовок приложения ..."

4) Теперь в нумерации подписи названия можно включить номер главы 9. Это будет буква приложения. И не нужно создавать кучу подписей.

Это один из возможных вариантов. Можно также использовать поле LISTNUM, можно связать уровень списка с несколькими стилями абзаца (через свойство стиля "основан на"). Трудно сказать что лучше.

Вся проблема в том, что уровней у списка всего девять, а нужно больше. Если бы уровней было сколько угодно либо можно было "официально" связывать уровень с несколькими стилями абзаца, то никаких бы проблем не было и вся нумерация делалась просто в пределах одного списка.

Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

18

Re: Ненормализированный многоуровневый список, как?

Haanz пишет:

Немного не поняли наверное.

Хотелось бы чтобы текстовые блоки автоматически сдвигались друг относительно друга:

1.1. ххх
     1.1.1 xxx

или

1.1.1 xxx
     1.1.1.1 xxx

Мне кажется, что для такого "ненормализованного" списка самый грамотный подход это полное отсутствие связи между нумерацией и свойствами абзаца. Известно, что стиль списка и стиль абзаца всегда влияют друг на друга: даже если они не связаны (уровни стиля списка не привязаны к абзацам), то все равно применение стиля абзаца уничтожает стиль списка, а применение стиля списка перехватывает управление свойствами абзаца у стиля абзаца.

Для нумерации можно использовать поле LISTNUM, а для настроек абзаца можно сделать несколько стилей абзаца с разными отступами, выступами и т.д. Это обеспечит полную развязку нумерации и свойств абзаца. Правда для работы с LISTNUM наверно лучше написать какие-то макросы.

Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

19

Re: Ненормализированный многоуровневый список, как?

Александр Б. пишет:

1) Создаем стиль списка "Список для основных разделов"
Первые восемь уровней списка связываем со встроенными стилями заголовков "Заголовок 1" - "Заголовок 8". Уровень 9 не трогаем. Нечетные уровни (4 шт) это собственно заголовки, четные уровни (4 шт) это "пункты" (т.е. нумерованные абзацы).

Прошу прощения, тут я соврал. Так не получится.


Александр Б. пишет:

Можно также использовать поле LISTNUM, можно связать уровень списка с несколькими стилями абзаца (через свойство стиля "основан на"). Трудно сказать что лучше.

Вот это правда.

Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

20

Re: Ненормализированный многоуровневый список, как?

andrkar пишет:

Вот, принимай

Добрый день.

Опять приходится иметь дело с многоуровневыми списками, привязанными к номерам заголовков, имеющих требуемый уровень (outline). К сожалению, приемлемого варианта я пока не нашел. Вариант, предложенный andrkar, имеет тот недостаток, что при сбросе номера списка абзац получает стиль базового стиля. Напр., если абзац имел стиль "Пункт 4", то при сброе нумерации на таком нумерованном абзаце абзац получает стиль "Heading 4".

Мой личный опыт борьбы с такими списками (http://wordexpert.ru/forum/viewtopic.php?id=2289) показал, что если создать стили пунктов на базе стилей заголовков соответствующего уровня, то свойства абзаца стилей пунктов изменить можно, а свойство шрифта нумерации - нет. Согласитесь, если у вас заголовки и их номера выполнены жирным шрифтом (да еще имеют более крупный размер по сравнению со шрифтом основного текста), то нумеровать таким шрифтом пункты плохо.

Я ищу стабильное решение, которое позволит создать стили многоуровнего списка и поместить их в стилевой шаблон. Целевой вариант текста с применением ожидаемых стилей  указан в приведенной ссылке (при этом возможна ситуация, когда у пунктов есть подпункты). При создании текста автор, по моему мнению, должен пользоваться только стилями из прицепленного к документу стилевого шаблона и не строить в документе вручную многоуровневый список. При этом должны корректно срабатывать сбросы нумерации ("сброшенный" номер должен иметь тот же стиль, что и несброшенный, не съезжать в сторону и т.п.).

Если кто-то найдет решение, отвечающее указанным требованиям, оформит его в формате стилевого шаблона и выложит этот dot-файл,  то я готов его протестировать.

21

Re: Ненормализированный многоуровневый список, как?

yshindin, то что я скажу, вам наверняка известно, но я повторю для других. Word не позволяет связать один уровень списка с несколькими стилями абзаца. Конечно, извратившись это можно сделать, но после этого попытка отредактировать стиль списка приведет к полной утрате связи со стилями абзаца. Эту связь нужно будет повторно восстанавливать; может это и нечего, но не удобно.

Я не стал копать глубоко в этом вопросе, поскольку из самого интерфейса Ворда понятно, что он против связывания одного уровня стиля списка с двумя или более стилями абзаца.

Я решил этот вопрос, используя нумерацию с помощью полей LISTNUM. В моем шаблоне отличные макросы для этого (почти не отличается от применения обычных стилей). Можете протестировать.

В будущем я собираюсь делать шаблон с нумерацией чисто на LISTNUM. Это позволит вообще не использовать связанные стили, как советует aap77. И я с ним согласен, но считаю, что эти советы надо подкреплять реальными средствами, то бишь макросами. Кстати говоря, в Word 2013 связь стилей списка со стилями абзаца немного глючит (при подключении шаблона). Еще один аргумент в пользу LISTNUM.

Сейчас мне надо продумать названия стилей. Вы и aap77 дали достаточно советов (надо использовать английски буквы, и суффикс, а не префикс). Теперь мне надо придумать как назвать заголовки и по две штуки дополнительных абзацев на каждый заголовок (итого три разных стиля абзаца на один уровень нумерации, третий стиль абзаца на всякий случай).

yshindin, можем немного скооперироваться. Я могу позаимствовать ваши названия стилей, а может быть и ваши макросы для работы со стилями. Вы можете позаимствовать мои макросы для нумерации рисунков, таблиц и формул и вставки перекрестных ссылок (когда они будут готовы с учетом новой основы LISTNUM).

В ближайшее время, правда, я не буду ничего активно делать. Просто сажаю зерна, которые потом могут взойти.

Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

22

Re: Ненормализированный многоуровневый список, как?

Александр Б. пишет:

Сейчас мне надо продумать названия стилей.

Александр, вот в прицепе мои названия стилей с небольшими пояснениями, пример стилевого шаблона и демонстрационный файл. Может быть, они дадут вам идею названий ваших стилей. Часть моих - стилей встроенные, как я писал ранее.

Post's attachments

ШаблоныСтили.7z 177.02 Кб, 19 скачиваний с 2014-12-08 

You don't have the permssions to download the attachments of this post.

23

Re: Ненормализированный многоуровневый список, как?

Александр Б. пишет:

Я решил этот вопрос, используя нумерацию с помощью полей LISTNUM.

Еще один способ обеспечить многоуровневую нумерацию в документе, привязанную к номерам заголовков – это использование полей Word. Помимо полей LISTNUM, указываемых Александром, привожу пример на базе полей StyleRef и SEQ (см. файл примера в прицепе – его надо рассматривать как в обычном режиме, так и в режиме отображения кодов полей).

Преимущество этого подхода:
- для нумерации пункта не нужен особый стиль нумерации абзаца.

Недостатки подхода:
- при переносе нумерованных пунктов в другой раздел этого же документа необходимо обновлять поля в документе (что несколько затратно по времени);
- при формировании нового абзаца необходимо вручную или макросом вставлять пару полей;
- в абзац заголовка подраздела или где-то в его начало надо вставлять поле, сбрасывающее нумерацию списка в подразделе (в примере это список OS1). Но размещение любого поля в заголовочном абзаце вообще-то не есть хорошо, а размещение поля еще где-то рядом, напр. во фрейме, привязанном к абзацу, либо в отдельном абзаце утяжеляет решение.

В целом, этот подход иногда помогает. Вместе с тем, решение на базе штатных многоуровневых списков, реализованное стилевым способом, видится более эффективным решением.

Post's attachments

SeqBasedNumbering.docx 104.31 Кб, 13 скачиваний с 2014-12-10 

You don't have the permssions to download the attachments of this post.

24

Re: Ненормализированный многоуровневый список, как?

Haanz пишет:

Для нумерации можно использовать поле LISTNUM, а для настроек абзаца можно сделать несколько стилей абзаца с разными отступами, выступами и т.д. Это обеспечит полную развязку нумерации и свойств абзаца. Правда для работы с LISTNUM наверно лучше написать какие-то макросы.

Согласен с Александром, поле LISTNUM удобно. На мой взгляд, оно удобнее, чем приведенная мной комбинация полей StyleRef и SEQ. И есть плюсы: на абзац, содержащий такое поле, можно сослаться кросс-референсом, как на нумерованный пункт. Конечно, следует следить за обновлением полей.

При создании стиля многоуровнего списка, связанного по уровням со стилями заголовков Heading X, не забудьте определить для стиля списка в стилевом шаблоне имя списка для поля LISTNUM (см. в прицепе скриншот). В этом примере имя списка - "Heading". Тогда и в поле LISTNUM для нумерации пункта следует указывать это имя: { LISTNUM Heading \l2} - это пример для пункта уровня 2, следующего, напр., за заголовком Heading 1.

Post's attachments

11-12-2014 15-03-14.png
11-12-2014 15-03-14.png 57.56 Кб, 1 скачиваний с 2014-12-11 

You don't have the permssions to download the attachments of this post.