Женяй (jenyay) wrote,

Автоматическая нумерация рисунков и формул в Word’е

Я поражаюсь разработчикам, которые делали в Ворде автоматическую нумерация формул, рисунков и всех остальных объектов. Это ж надо было додуматься сделать так, что возможность вроде как есть, но пользоватья ей невозможно без плясок с бубном и дубины шамана. Сразу предупреждаю, что я сейчас говорю про Ворд из Office 2003 , не знаю может быть в 2007 или 2010 что-то и изменилось.

Итак, что нам нужно от Ворда? Вот, допустим, есть у нас такой текст:

Текст с рисунком

Мы хотим сделать так, чтобы рисунки автоматически перенумеровывались, если перед ними добавляются новые рисунки, и чтобы при этом все упоминания номера рисунка в тексте тоже автоматом исправлялись.

В принципе, в ворде есть такая возможность. Сначала вставим номер рисунка. Для этого удаляем единицу, которую мы уже написали в подрисуночной подписи, выбираем пункт меню «Вставка – Ссылка – Название», затем выбираем в поле «Подпись» «Рисунок», ставим галку «Исключить подпись из названия», потому что слово «Рисунок» мы уже и так написали.

Вставка номера рисунка

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

Подрисуночная подпись с полем

Теперь мы хотим сослаться на этот рисунок в тексте, чтобы эта ссылка всегда оставалась правильной независимо от того, какой номер этого рисунка станет в будущем. Казалось бы, в Ворде все для этого есть. Удаляем нашу единицу в тексте, ставим курсор на ее место и выбираем пункт меню «Вставка – Ссылка – Перекрестная ссылка».

Вставка ссылки на рисунок

Выбираем тип ссылки «Рисунок», находим в списке внизу наш рисунок, а вот список из «Вставить ссылку на:» вгоняет в ступор. Казалось бы, нам нужно просто вставить номер рисунка «А вот хрен вам», – говорят разработчики – «Мы лучше знаем, что вам надо вставлять. Вы хотите вставить ‘Рисунок 1′ «. Просто номер без постоянной части вставить нельзя, а постоянная часть – это все, что находится на этой же строке левее номера.

Ладно, мы не гордые,  мы можем для начала вставить все это безобразие полностью:

Полная ссылка на рисунок

А теперь назло разработчикам выделяем слово «Рисунок», выбираем пункт меню «Формат – Шрифт» и делаем выделенную область невидимой с помощью галки «скрытый». На первый взгляд мы получили, что хотели:

Автоматическая нумерация рисунков

Мы можем даже точно так же добавить рисунок выше, а наша ссылка останется верной:

Два рисунка с автоматической нумерацией

Для пересчета полей только понадобится выделить весь текст и нажать клавишу F9.

Все вроде бы работает, но появляется другая проблема – если включить отображение непечатных знаков, но все наши лишние «Рисунки» опять появятся. Больше того, такой же способ нумерации можно применять для формул, тогда при вставке ссылки на нее вместо относительно безобидного «Рисунок» будет втавлена целая формула, – я ведь выше писал, что постоянной частью считается все, что левее поля с номером.

Автоматическая нумерация с непечатными символами

Такой текст в режиме отображения непечатных символов читать просто невозможно, а этот режим, все-таки, очень уж полезен.

Кроме того, здесь есть еще один неприятный момент. Если документ создан в Ворде из Office 97 (есть еще такие, кто им пользуется) и старее, то будет невозможно выделить только слово «Рисунок» в поле без номера. Для обхода этой проблемы в более новом Ворде, достаточно создать новый документ и скопировать туда содержимое исходного файла.

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

Для начала посмотрим, что делает ворд при вставке ссылки на рисунок (или формулу). Он создает закладку с незапоминающимся названием вроде «_Ref262659882″, которая ссылается на текст «Рисунок N». Чтобы в этом убедиться, щелкните правой кнопкой на ссылку на рисунок и выберите пункт меню «Коды / значение полей». Вы увидите примерно следующее:

Коды полей

Мы можем поступить так же, но умнее. Мы выделим созданное поле с номером в подрисуночной подписи (только номер) и создадим свою закладку на это поле. Для этого надо выбрать пункт меню «Вставка – Закладка»

Создание закладки

Вводим имя закладки (пробелы в имени использовать нельзя)

А теперь, если мы хотим сослаться на рисунок, идем все в тот же пункт меню «Вставка – Ссылка – Перекрестная ссылка» и в качестве «Тип ссылки» выбираем «Закладка», в поле «Вставить ссылку на:» выбираем «Текст закладки», а внизу находим нашу только что созданную закладку:

Вставка ссылки на закладку

Ура! мы опять сделали ссылку на номер:

Результат ссылки на закладку

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

Два рисунка с правильной нумерацией

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

Непечатные символы при использовании ссылки на закладку

А на следующем скриншоте показаны коды полей:

Коды полей при использовании ссылок на закладки

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

Эх, знать бы про этот способ хотя бы на год раньше…

Эта запись у меня в блоге

Tags: microsoft, ворд, наука, софт
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded  

  • 23 comments