Сохранение без форматирования

Автор RageGuy, 30 июля 2020, 16:45

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

McAaron

Цитата: RageGuy от 30 июля 2020, 16:45
Приветствую всех. Нужна помощь.
Дело в следующем.
Работаю инженером, пишу технические тексты (руководства, инструкции и т.п.). Пользуюсь Writer. Пересел с Word, так как функционал в Writer более подходящий для меня. Использую стили, содержания, списки (нумерацию многоуровневую), перекрестные ссылки, вставка рисунков и таблиц. Проблема в том, что никто не может редактировать мои документы, у них все разваливается. Даже порой заказчики ругаются (их PDF не устраивает). Сейчас предстоит писать большой документ (страниц 150-200), начальник говорит: "Давай без автоматизации". А я не готов ручками править нумерацию пунктов, рисунков и таблиц и т.п.

Вот мысль появилась. Может есть какая-нибудь возможность сохранять документ как бы без форматирования. Чтобы внешне был как оригинал, но вместо автоматической нумерации обычные цифры, которые можно по отдельности редактировать обычным способом, вместо ссылок – конечный текст?
Буду благодарен предложениям и идеям.
Я сам давно и много имею дело с пояснительными записками по гостам 2, 19, 32 и прочим, включая разные отчеты.
Выработал для себя следующие правила, которые зафиксировал в шаблонеах:
1) Не плодить стили в документе. Никаких -- все только в шаблонах. Почти все, что требуют госты в отношении оформления, реализуется штатным набором стилей, измененным под требования. Исключение составляют заголовки -- они бывют на одном уровне нумерованные и ненумерованные, а также должны/не должны собираться в оглавление. Здесь нужно стили создавать и вносить их в перечень сборки оглавления. Соответственно, это в шаблонах.
2) правлю стили перечней, как этого требуют госты, поскольку штатные никуда не годятся.
3) сохраняю документ в odt и в .doc и оба отправляю -- ворд оффтопика нормально работает и с .doc и с .odt, если нет "наворотов". А гост наворотов не требует.

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

Если интересно, раскажу, как бороться с формулами и рисунками.

economist

#16
Цитата: RageGuy от 30 июля 2020, 23:23А с полями и ссылками что-нибудь аналогичное? Не встречали? Хотя бы слышали?

Если нужно "разавтоматизировать" форматирование стилями, то у Питоньяка где-то в его 2-х книжках есть примеры как считать имя текущего стиля, его параметры, сбросить его на Базовый/Основной и применить параметры, будет аналог ручного форматирования. Какой-то готовой кнопки/метода Basic для этого, думаю, нет.

Что касается Полей - некоторые Поля при копировании/вставке - становятся простым текстом с прежним форматированием (теряют связь с Полем). Написать макрос копирования/вставки (Ctrl+C Ctrl+V) несложно.

Вот пример таких полей:

Поле пользователя (Ctrl+F2 - Переменные - Поле пользователя), в API это TextFields.User - хорошо подходит для повторения в разных местах текста одного и того же, скажем, названия ГОСТа. Все его копии - связанные клоны.

У него, однако, есть минусы:
- рвет неразрывный пробел (негодно для ФИО с инициалами, адресов с ул. итп)
- не правится в защищенном Разделе
- диалог с окошком для правки - коряв и узок

Поэтому  авторы OpenOffice|LibreOffice сделали второй вид полей для правки первого вида полей:
Поле ввода (Ctrl+F2 - Переменные - [выбрать Поле пользователя и ввести подсказку] - Поле ввода), в API это TextFields.InputUser.

Его плюсы:
- не рвет неразрывный пробел/мягкий перенос
- правится в защищенном Разделе
- правится или в компактном (LO6+) диалоге с заголовком и большим полем для правки, или прямо в тексте при "втором медленном клике" (весьма неочевидном!)
- при копировании/вставке - такое поле вставляется как текст с форматированием, т.е больше оно не меняет Поле пользователя. Вот это то, что вам, видимо, нужно.  


Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

mikekaganski

Начал вчера ночью реализацию ConvertNumbersToText из VBA. Будет в 7.1 - и тогда заработают макросы типа

Option VBASupport 1

Sub NumbersToText
  ActiveDocument.Content.ListFormat.ConvertNumbersToText
End Sub


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

Многие вещи в списках реализованы специальным образом, так, что это не реализуется вне списка.
Но в целом, для массового случая, будет более-менее.

Пока не планирую нормально работать с маркерами-картинками. Посмотрим, как на выходных настроение будет.
С уважением,
Михаил Каганский

McAaron

Цитата: mikekaganski от 31 июля 2020, 15:17
Начал вчера ночью реализацию ConvertNumbersToText из VBA. Будет в 7.1 - и тогда заработают макросы типа

Option VBASupport 1

Sub NumbersToText
  ActiveDocument.Content.ListFormat.ConvertNumbersToText
End Sub


Сразу наткнулся на вещи, которые невозможно идеально сохранить при переделке списка в простой текст.
Например, выравнивание номера (по правому краю или по центру позиции номера) в связке со следующим пробелом (или "ничем").
Так выравнивание нумерации влево или по центру не нужно вообще, потому что в принципе бессмысленно. Нужно, чтобы только вправо -- чтобы единицы были под единицами, десятки под десятками и далее по порядку, даже если между ними куча строк.

mikekaganski

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

mikekaganski

#20
Цитата: RageGuy от 30 июля 2020, 23:23
А с полями и ссылками что-нибудь аналогичное? Не встречали? Хотя бы слышали?

Для замены полей можно воспользоваться этим:


Sub FieldsToText
 fields = ThisComponent.getTextFields.CreateEnumeration
 Dim map()
 While fields.hasMoreElements
   field = fields.nextElement
   ReDim Preserve map(LBound(map) To UBound(map) + 1)
   map(UBound(map)) = Array(field, field.getPresentation(false))
 Wend
 For i = LBound(map) To UBound(map)
   map(i)(0).getAnchor.setString(map(i)(1))
 Next i
End Sub


Сначала оно собирает все поля и их тексты, а вторым проходом заменяет. Это нужно для того, чтобы не нарушить значение какого-нибудь поля изменением предыдущего поля, от которого оно зависит (и нельзя просто делать это в обратном порядке - от конца документа к началу - потому что некоторые поля, например, User Field, имеют глобальную видимость).

Но, наверное, будет плохо работать с полями типа оглавлений.

Upd: точнее, не будет работать совсем :)
С уважением,
Михаил Каганский

economist

mikekaganski - очень полезный код, спасибо. Я только сейчас понял как он мне нужен ;-)
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

mikekaganski

Цитата: RageGuy от 30 июля 2020, 23:23А с полями и ссылками что-нибудь аналогичное? Не встречали? Хотя бы слышали?

Насчёт ссылок не вполне понятно, о чём речь. Вы хотите разорвать ссылки, например, когда вставили изображение связью, а не внедрением? Тогда нужно воспользоваться диалогом Правка|Ссылки на внешние файлы. Там есть соответствующая кнопка.

Или Вы хотите, чтобы гиперссылки, которые можно нажать в тексте, превратились в просто текст?
С уважением,
Михаил Каганский

RageGuy

Извините, не было возможности ответить. Начну с конца...
К сожалению с макросами очень плохо дружу. И то, применял считанные разы в Worde, Excel. Во Writer пока не понятно. Надо разбираться.
Цитата: mikekaganski от 31 июля 2020, 16:47Насчёт ссылок не вполне понятно, о чём речь.
Поясню. И по поводу полей тоже. Использую поля (в основном) в названии (подписи) к изображениям, таблицам, формулам. Так же использую поля в оформлении рамок по ГОСТ 2.104 (кстати, мои рамки некорректно отображаются в .docx и совсем не дружат с .doc). Перекрестные ссылки - это в первую очередь ссылки на изображение, таблицу, формулу. Могу "поизвращаться", используя поля и ссылки на них, в ссылках на списки сокращений и нормативной документации в конце документа. А, да, еще много ссылок на пункты (заголовки, абзацы) внутри документа.
В первую очередь это все для облегчения своей работы. Во вторую — документ в PDF-формате приобретает интерактивность.

mikekaganski

Цитата: RageGuy от 31 июля 2020, 22:16Перекрестные ссылки - это в первую очередь ссылки на изображение, таблицу, формулу. Могу "поизвращаться", используя поля и ссылки на них, в ссылках на списки сокращений и нормативной документации в конце документа. А, да, еще много ссылок на пункты (заголовки, абзацы) внутри документа.
В первую очередь это все для облегчения своей работы. Во вторую — документ в PDF-формате приобретает интерактивность.

И что же вы хотите сделать с этими перекрёстными ссылками?
С уважением,
Михаил Каганский

RageGuy

Цитата: McAaron от 31 июля 2020, 02:341) Не плодить стили в документе. Никаких -- все только в шаблонах.
Так же и у меня – все в шаблоне.
Цитата: McAaron от 31 июля 2020, 02:342) правлю стили перечней
Сразу же сделал свои, да.
Цитата: McAaron от 31 июля 2020, 02:343) сохраняю документ в odt и в .doc и оба отправляю -- ворд оффтопика нормально работает и с .doc и с .odt, если нет "наворотов".
Да вопрос с редактированием в Word остро не стоит. Как уже заметили, установить бесплатный Libre нет проблем. Да, согласен, если без наворотов, то нормально открывается и редактируется. Вот только с рамками некрасиво получается (писал выше).
Цитата: McAaron от 31 июля 2020, 02:34Можно также отправлять версию с включенным отслеживанием правок -- это позволяет потом быстро очистить документ от мусора
Спасибо за идею. Я раньше пользовался этим режимом для правки в явном виде, когда видно, что стираю, что добавляю. А в скрытом виде как-то не догадался.
Цитата: McAaron от 31 июля 2020, 02:34Если интересно, раскажу, как бороться с формулами и рисунками.
Да вопросы по рисункам есть, порой руки опускаются (видимо не понимаю логики). В Word вроде все гладко было. А по формулам еще не возникали проблемы.

RageGuy

Цитата: mikekaganski от 31 июля 2020, 22:25И что же вы хотите сделать с этими перекрёстными ссылками?
По подобию с нумерацией. Сделать их редактируемым простым текстом. Как если бы я скопировал ссылку и вставил "как текст".

mikekaganski

Перекрёстные ссылки, которые Вы упомянули - частный случай полей. Проверьте, будет ли достаточно макроса, приведённого в ответе #20. Если нет, нужен пример документа, чтобы на нём тестировать.
С уважением,
Михаил Каганский

RageGuy

Цитата: economist от 31 июля 2020, 11:43Что касается Полей - некоторые Поля при копировании/вставке - становятся простым текстом с прежним форматированием (теряют связь с Полем). Написать макрос копирования/вставки (Ctrl+C Ctrl+V) несложно.
Собственно economist об этом же.
Цитата: economist от 31 июля 2020, 11:43Вот пример таких полей:
Надо вчитываться. Смотреть. Спасибо за ориентировки.
Цитата: mikekaganski от 31 июля 2020, 15:17Начал вчера ночью реализацию
Ничего не понял, но было интересно :). Этот способ не связан с описываемым в Вашей ссылке? Тяжело осознавать, что ты в чем-то нуб:)
Цитата: mikekaganski от 31 июля 2020, 16:22Для замены полей можно воспользоваться этим:
Спасибо, mikekaganski, буду пробовать
Цитата: mikekaganski от 31 июля 2020, 16:22Upd: точнее, не будет работать совсем
Оглавление можно не трогать :) Хотя если кому понадобится добавить заголовок, то в оглавлении его не увидит. Стили-то не знаем... Оглавление у нас исполняют традиционно в скрытой таблице.

RageGuy

Цитата: mikekaganski от 31 июля 2020, 22:43Проверьте, будет ли достаточно макроса
Боюсь, смогу сделать это только в будние на работе. В выходные не до этого будет. Спасибо, mikekaganski.