Необходимо разное количество страниц

Автор iamfomik, 25 ноября 2015, 10:45

0 Пользователи и 1 гость просматривают эту тему.

iamfomik

Приветствую.

Делаю для своей организации основной шаблон для документации и не могу придумать как осуществить одну хитрую вещь.

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

Помимо этого нужно следующее - сквозная нумерация страниц с подсчётом общего количества страниц, она выводится на каждой странице - с этим нет проблем.
А ещё нужна нумерация страниц и количество страниц в пределах раздела. То есть на странице с типом "титульник раздела" в колонтитуле должно быть что-то типа
"страница раздела - 1 из 5 сковзной номер страницы - 3 из 15".
Я так понимаю что тут нужно что-то с переменными в полях придумать. Отсюда и вопрос - как сделать в полях собственный счётчик? Рассмотрю любые варианты, кроме использования составного документа - это очень неудобный вариант, хотя и рабочий.

Нарисовал пример того как это должно выглядеть в итоге - в прикреплении

economist

Боюсь, что Составной документ - это как раз ваш случай. Если осознано лезть в лыжах на гамак - то есть еще и макросы. В книгах Питоньяка полно примеров как посчитать "страниц всего" и пронумеровать их п/п, и как записать что-то в текст колонтитула (не виде поля). А внутрираздельную нумерацию - прекрасно делает сам OpenOffice и LibreOffice (задается Вставка - Разрыв или по разделам).   
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

iamfomik

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

Как посчитать "Страниц всего" - это самая простая задача, а могу решить её разными способами, так что это не проблема. И в текст колонтитула я тоже знаю как записать, но это не решает моих задач.
Макросы я поизучал - не помогло. Основная проблема - с номером страниц ничего нельзя сделать. Я не могу создать второй номер страниц через макросы или через сам ОО. Есть полезная штука - вставка номера страницы со смещением. Если бы записать смещение в поле в каждом разделе, а номер страницы вычислять как "номер страницы"- "смещение раздела", то я бы рещил задачу. Но средствами ОО нельзя такую формулу записать, и через макрос тоже не получается (кажется там была проблема с получением номера страницы).

Я бы даже смог написать макрос, который ручками бы рассчитывал номера каждой страницы. Но куда его потом писать? в колонтитул не запишешь - он будет повторяться на каждой странице, а нужно на каждой своё отображать. Единственный вариант - на каждой странице программно создавать врезку с текстовым полем и в поле прописывать номер страницы. Но как-то уж слишком костыльно.

Всегда любил ОО и считал что в плане макросов он имеет большие возможности. А оказалось что они очень даже скромные. Фактически, всё что можно сделать макросами можно сделать и через интерфейс. А если что-то нельзя сделать через интерфейс, то и через макрос проблематично.


kompilainenn

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

iamfomik

Да, это хороший блог - я его давно уже весь изучил. К сожалению, конкретно в моём вопросе он не помог - да я могу сделать нумерацию со смещением, с разрывом и т.п. Но не могу сделать двойную - чтобы страница одновременно была и 21 и 5, например....

ОО может выполнить 99% всех задач, необходимых при создании документов. Видимо, я нашёл задачку, которая попадает в 1%, где ОО бессилен.

maksvlad

#5
Идея с макросом самая персперктивная. А-ля алгоритм.
Можно получить номер страницы, где начало раздела. Запихать его в массив. Если текущая страница совпадает с элементом массива, то страница раздела = 1, далее итерация. Запихать в поле. Так как привязка к началу раздела, то счёт с 1 должен сработать. Макрос установить на любое удобное событие или кнопку.
У Питоньяка есть описание как макросом создать  Содержание (14.13. Table of contents).
Я бы взял этот макрос за основу и по описанному алгоритму дальше ковырял
Макрос пихать в поле колонтитула. Можно же задать на каких разделах он будет выводить номер страницы,  а на каких нет

N.b.
Отнимать значение текущей страницы от страницы раздела, видимо, более удобно будет.

iamfomik

"Макрос пихать в поле колонтитула. Можно же задать на каких разделах он будет выводить номер страницы,  а на каких нет "

А вот тут можно подробнее? Есть ли возможность сделать макрос, запихать его в поле, а поле в колонтитул?

Я Питоньяка только поверхностно изучил, поэтому могу многого не знать.

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

iamfomik

Каким-то неведомым образом я смог это сделать =)

Проблемы перевода ОО на русский сильно сказались. Питоньяк в своей книге в разделе про поля упоминает 2 поля - PageReferenceGet и PageReferenceSet. Судя по описанию это то что мне нужно. Создав их через макрос я выяснил, что это пункты "Задать переменную страницы" и "Показать переменную страницы". В начале раздела делаем "Задать переменную страницы" с параметров ВКЛ в самом тексте, а в колонтитул один раз вставляем "Показать переменную страницы". Остаётся вопрос с формированием оглавления, но уж это точно можно легко макросом сделать.

maksvlad

Цитата: iamfomik от  6 июня 2016, 10:40
"Макрос пихать в поле колонтитула. Можно же задать на каких разделах он будет выводить номер страницы,  а на каких нет "

А вот тут можно подробнее? Есть ли возможность сделать макрос, запихать его в поле, а поле в колонтитул?
для ЛОО 5.1
Вставка>Поле>Еще поля (или Ктр+Ф2) >Функции>Выполнить макрос
Все это успешно вставляется в колонтитул.
ЛКМ по полю запускает макрос.

economist

iamfomik - если вы не упомянули фразу Поддокумент в контексте Составной документ - значит вы не до конца изучили тему СД. Поддокумент - входит в составной, но имеет свою нумерацию. Так что наверняка решение в OpenOffice и LibreOffice есть. Честно говоря, я еще ни разу не сталкивался с заслуживающей внимания задачей, которую не удалось бы решить помощью OpenOffice и LibreOffice, да и СПО вообще.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

iamfomik

Что-то не понимаю на что это вы намекаете?
Я меня СПО и ОО тоже всегда справляется со всеми задачами, но вот нашлась одна, которая никак не решалась.

А вы сами хорошо изучили составные документы? Есть где-то подробное описание работы с ними? Всё что я находил - создать составной документ и вставить в него вложенные.

"Поддокумент - входит в составной, но имеет свою нумерацию" - вот вы откуда это взяли? Можете доказать или просто так предположили? Я на всякий случай перепроверил - создал два документа, сделал в них нумерацию. Создал составной, вставил в него эти два документа. Итог - нумерация страниц одна. Сквозная. Определённая в составном документе. Кроме того, колонтитулы из поддокумента заменяются на колонтитулы из составного документа. Что я упустил?

economist

В ПН вложу ссылку на офдок. А счас на грибах (Кубань) - белых море...
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

anton

Походу заблудился...
А что всё со "смещением" не решится вопрос? Оно есть, как функция, но пользоваться им невозможно.