решил я поработать халявщиком. ну то есть фрилансером.
прихожу значит в гости в издательство поздравляю с новым годом и заодно так ненавязчиво интересуюсь "есть чего на выходных покликать?".
мне говорят "есть. трехтомник. сто листов с гаком. какой том возьмешь?"
на что я отвечаю "я стар уже, наверное можно даже сказать я суперстар уже... все возьму".
ндаааа.
сто листов с гаком. этот гак кстати, около двадцатки. внести редакторскую правку и сверстать.
я откровенно подутомился. на это все мне понадобилось полтора месяца из которых вторую половину я работал в нерабочее время - по вечерам.
Итак это было что-то вроде вступления.
А теперь задача:
представьте себе строчку, содержащую фамилию и инициалы. А теперь включите выравнивание по абзацу. Что получилось? Правильно, слова разошлись и абзац красиво заполнил полосу по ширине. Да вот беда: инициалы отъехали от фамилии и разъехались сами. Не смотрится.
Надо инициалы пододвинуть поближе.
В ворде есть такой термин "неразрывный пробел". Вот я этим пробелом и воспользовался ставлю пробел и инициалы перестали отъезжать. Правда несколько книжек назад редактор мне сказал - пододвинь поближе, а то далековато.
Как укоротить неразрывный пробел? хмм. ну, можно задать ему другую ширину через spacing. Проблема в том, что я активно пользуюсь этим спасингом сам, и меняю его постоянно в пределах абзаца, поэтому такой способ не подходит.
Тогда можно сделать пробел другим шрифтом. Тоже не плохо, однако при переформатировании всего текста шрифт везде станет одного размера. Тоже не годится.
Ну, можно еще сделать его нижним индексом - или верхним. Вот этот вариант меня и устроил.
спустя время я нашел правда спецсимвол "короткий пробел", но что-то мне в нем не понравилось. не помню что.
итак я сбацал макрос который вставляет неразрывный пробел и делает его нижним индексом. Повешал макрос на горячую клавишу и радуюсь жизни.
И выглядит это так - вижу фамилию и инициалы - мышкой выделяю один пробел и нажимаю горячую клавишу - потом мышкой выделяю второй пробел и снова нажимаю горячую клавишу.
а теперь фокус дети мои:
книжка называется "летопись российского флота".
сто страниц с гаком.
то есть почти две тысячи страниц текста.
прикинули сколько там фамилий?
в общем я начал уставать - даже геймерская мышка не поднимала мне настроения - впрочем на офисной мышке я бы вообще сдох.
ну и я подумал - а что если макрос сам будет искать пробел?
сказано-сделано.
Итак теперь выделять пробел не надо - надо лишь кликнуть в пробел, а макрос сам оглянется вокруг и если надо сам же и удалит пробел.
ну и вот как он выглядит
Sub КороткийНеразрывныйПробел()
Selection.Text = ""
Dim r As Range
Set r = Selection.Range
Selection.MoveRight unit:=wdCharacter, Count:=1, Extend:=wdExtend
If Selection.Text = " " Then
Set r = Selection.Range
GoTo go
End If
Selection.MoveLeft unit:=wdCharacter, Count:=1
Selection.MoveLeft unit:=wdCharacter, Count:=1, Extend:=wdExtend
If Selection.Text = " " Then
Set r = Selection.Range
GoTo go
End If
Selection.MoveRight unit:=wdCharacter, Count:=1
go:
r.Text = " "
r.Font.Subscript = True
Selection.MoveRight unit:=wdCharacter, Count:=1
Selection.Font.Subscript = False
End Sub
сначала макрос стирает все выделенное - а вдруг мы таки выделили пробел?
потом делает шаг вправо и смотрит "это пробел?"
если не пробел, то делает шаг влево и смотрит "а это пробел?".
ну и после "go" собственно замена.
Ворд правда парень юморной - обычный и неразрывный пробелы выглядят одинаково, но действуют по разному. хехе.
ЗЫ. сейчас пишу этот текст и мне подумалось "а ведь на мышке-то тоже есть возможность создать горячую клавишу - там даже можно и левый клик тоже в макрос записать".