1

Тема: Быстрый набор

Буду многословен.

Мне тут надо печатать сборник задач по физике и я пытаюсь как то оптимизировать работу. Основная проблема - это выполнение второстепенных задач вроде переключения на мышку для нажатия разных кнопок, переключение раскладок для набора одного символа и тому подобное неудобное для рук. И конечно длинные повторяющие свова.
По ходу появляются вопросы(офис 2003):
1) Кое что я решил встроенной автозаменой, например: вместо q я ввожу кю и оно заменяется или слова вроде электромагнитный пишу как эмг и оно заменяется на электромагнитн. Но  встроенная автозамена не очень удобна в использовании потому что всё равно возникают проблемы с окончаниями слов(на каждое окончание приходится делать свой вариант автозамены) или несрабатыванием автозамены пока не поставишь какой нибудь разделительный символ. Поэтому нужна удобная программа для автоподстановки(или автозавершения) часто встречающихся слов. Желательно с поддержкой падежей или вариантов окончания, что бы можно было быстро выбирать наиболее подходую концовку слова. Лучше что бы она ваобще предугадывала слово и его окончание на основе нализа уже введённого текста вплоть до целых фраз - как думаете сколько будет похожих моментов в ста подряд идущих задачах задачнике по физике(я это к тому, что если такой программы на удивление не существует, то её вроде бы можно будет сделать без особых сложностей). Все найденные ссылки давно мёртвые. Может стоит лучше писать на 2007 ворде, если там лучше реализованы подобные функции?
2) Нужен скрипт для индексов и стпереней, например меняющий цифры после _ на нижний(подстрочный) индекс, а после ^(или ** или ..) на верхний, при этом удаляя сами символы _ и ^ и с учётом +- для степеней. А звёздочка что бы заменялась на точку в верхнем индексе.
3) Поставил единственное найденное дополнение перестройка 2002 имеющее несколько удобных функций, но ворд его не видит: окошко блокировки скрипта при первом запуке и панельки программы не появляюся.
4)Можно ли превратить текстовый вложенный нумерованый список в автоматический? Есть ли сочетание клавиш позволяющее переходить на новую строку с автоматическим созданием вложенного нумерованного списка, а то неудобно вручную создавать эти списки.

2

Re: Быстрый набор

1.

Baz пишет:

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

Это вы, батенька, размахнулись. Анализ введённого текста и предсказание следующего это задача не тривиальная. Тем более для VBA. Как средство ускорения набора предлагаю диктовку или слепой набор. Затею с макросом считаю бесперспективной. Буду рад, если меня переубедят.:)
2.

Baz пишет:

Нужен скрипт для индексов и стпереней,

Так подойдёт?

Sub IndexesAndPowers()
  With ActiveDocument.Range.Find
    'Для степеней
    .Text = "_(*[0-9]@>)"
    .MatchWildcards = True
    .Replacement.Text = "\1"
    .Replacement.Font.Subscript = True
    .Execute Replace:=wdReplaceAll
    .Replacement.ClearFormatting
    .ClearFormatting
    'Замена звёздочки на точку в верхнем индексе
    .Text = "*"
    .MatchWildcards = False
    .Font.Superscript = True
    .Replacement.Text = ChrW(2219)
    .Replacement.Font.Superscript = True
    .Execute Replace:=wdReplaceAll
    .Replacement.ClearFormatting
    .ClearFormatting
    'Для индексов
    .Text = "^0094(*[0-9]@>)"
    .MatchWildcards = True
    .Replacement.Text = "\1"
    .Replacement.Font.Superscript = True
    .Execute Replace:=wdReplaceAll
  End With
End Sub

3.

Baz пишет:

окошко блокировки скрипта при первом запуке и панельки программы не появляюся.

Сервис→Макрос→Безопасность…Низкая

Про списки не понял

Лучше день потерять — потом за пять минут долететь!

3

Re: Быстрый набор

1) Если можно запустить скрипт в режиме реально времени который мог бы отслеживать вводимый текст и заносить его в какую нибудь сохраняемую базу, то на 70-80% тут ничего сложного не будет, потому что почти всегда предыдущее слово определеляет последующее или даже целую фразу. Хотя ваобще то я надеялся что из миллионов людей пользующихся вордом найдётся немало тех, кто много набирает и потому должно существовать много готовых программ.
2) Подойдёт всё что работает, но что бы кое что подогнать надо с кое чем разобраться, тоесть хотелось бы разобраться с тем как это работает не влезая пока что в изучение книг:
.Text = "_(*[0-9]@>)" - что тут означают *---@> ?
.Text = "^0094(*[0-9]@>)" - что это за 0094 ?

.MatchWildcards = True
.Replacement.Text = "\1"
.Execute Replace:=wdReplaceAll
- эти строки ваобще непонятны, хотя наверно вторая удаляет первый символ(мне понадобится удалять два символа)

и функцию .ClearFormatting наверно можно использовать для очистки форматирования которое так надоедает иногда?

4)В смысле я набираю список с циферками 1. __ 2. ___ и т.д. и к каждому пункту прилагаются подпункты 1) 2) и т.д. Так вот первый список набирается автоматически, а второй и то с трудом набирается только руками, т.е. перехожу на новую строку, там набираю 1) и пишу. И я спрашивал нельзя ли это как то сделать более автоматическим? Например по сочетанию клавиш что бы оно переходило на новую строку и начинало новую нумерацию а по другому сочетанию переходило на новую строку и возвращалось к старой нумерации (а это кстати идея для скрипта ели подобное в ворде ещё не реализовано, хотя я думаю что об этом должны были подумать)

5)Множество полезных функций вплоть до некоторых программ автозамены есть в мёртвых ссылках. Что делать? smile
внешняя ссылка
внешняя ссылка

4

Re: Быстрый набор

Baz пишет:

хотелось бы разобраться с тем как это работает не влезая пока что в изучение книг:
.Text = "_(*[0-9]@>)" - что тут означают *---@> ?
.Text = "^0094(*[0-9]@>)" - что это за 0094 ?

При поиске используется не буквальный текст, а подстановочные знаки (MatchWildCards = True). Выражение "_(*[0-9]@>)" означает, что ищется знак подчёркивания, за которым может идти любой текст (*), затем одна или несколько цифр ([0-9]@). Причём цифры должны стоять обязательно в конце выражения (на это указывает знак ">"). Затем найденное выражение заменяется на часть искомого выражения, заключенную в первую пару круглых скобок (.Replacement.Text = "\1"). Например, текст _-232 будет переведён в нижний индекс, а подчёркивание отброшено. Перевод в нижний индекс задаётся с помощью формата шрифта заменяемого текста (Replacement.Font.SubScript = True)
Аналогично делается и для верхнего индекса. Выражение ^0094 обозначает символ с номером 0094, это знак "^", который напрямую прописать нельзя
ClearFormatting используется для того, чтобы форматирование предыдущего поиска не влияло на последующий.
Более подробно про поиск с помощью подстановочных знаков, можно прочитать здесь

Лучше день потерять — потом за пять минут долететь!

5

Re: Быстрый набор

Я пару дней назад выучил регулярные выражения )) - они очень похожи, но имею чуть иной формат(по крайней мере в той версии которую я читал).

Насчёт пункта 4: аккуратно запущеные многоуровневые списки позволяют на лету менять вложенность нажатием клавишь таб и шифт+таб.

6

Re: Быстрый набор

ну это не совсем регулярные выражения:). Я именно поэтому и назвал их так, как в Word: подстановочные знаки
Про многоуровневые списки вы догадались совершенно правильно. Как вы их раньше не видели?

Лучше день потерять — потом за пять минут долететь!

7

Re: Быстрый набор

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

Кстати "Лучше день потерять — потом за пять минут долететь!" - это то о чём я подумал в первую очередь когда решил взяться за автоматизацию и продолжаю думать до сих пор.

Как оказалось вордовская автозамена работает очень неплохо, хотя и заняло много времени забивание туда вручную слов. Всё же я ещё не оставил мысли реализовать некоторые свои идеи по автонабору. Всё же возможно ли "запустить скрипт в режиме реально времени который мог бы отслеживать вводимый текст и заносить его в какую нибудь сохраняемую базу" или проще будет разрабатывать подобную программу как обычную программу в виде плагина к ворду?

Кстати, на счёт дополнения перестройка 2002: оно не работало потому что ссылка на стартовый макрос не прописывалась в нужную паку.

Отредактировано Baz (14.07.2010 00:58:32)