1

Итак, у меня есть несколько приложений, которые выглядят примерно так:
Приложение А. Уравнения
Приложение B: Образцы расчетов
и т.п.

Письмо контролируется как таковое:

Appendix [{seq AppL \*ALPHABETIC}]: Example

Где скобки представляют закладку, которая ссылается на это значение. Это означает, что я могу добавить больше приложений до, после и прочее, и надпись будет обновлена.

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

y = mx + b #({REF AppEq \*MERGEFORMAT}.{seq AppEq})

Проблема состоит в том, что всякий раз, когда я обновляю все (ctrl+A, f9), буквы в нумерации уравнений возвращаются к жирному шрифту. Переключатель * MERGEFORMAT должен предотвращать это, но, похоже, он не работает внутри уравнений (он работает в моих заголовках, и я протестировал его на работу в теле).

Есть ли способ исправить это, какой-то альтернативный способ приблизиться к этому, или, по крайней мере, какой-то способ уменьшить раздражение, которое это вызывает?

2 ответа2

1

Я не смог найти решение проблемы - я считаю, что это ошибка в Word. Тем не менее, я нашел работоспособное решение, используя макрос для обновления полей, а не вручную. Этот макрос будет показывать коды полей, снимать выделение с кодов, начинающихся с «^ d seq AppL», обновлять все поля в документе, затем перебирать правильные поля и скрывать коды полей. Я не могу утверждать, что это надежно или эффективно - но, возможно, это поможет кому-то в дальнейшем:

Sub UpdateRefs()
'Setup / checks
If Documents.Count = 0 Then Exit Sub
Application.ScreenUpdating = False

'Show field codes
ActiveDocument.ActiveWindow.View.ShowFieldCodes = True

'Unbold Appendix labels so they don't propagate.
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "^d seq AppL"
    .Replacement.Text = ""
    .Replacement.Font.Bold = False
    .Forward = True
    .Wrap = wdFindContinue
    .MatchWholeWord = True
End With
Selection.Find.Execute Replace:=wdReplaceAll

'Update all fields in document.
Dim oStory As Object
Dim oToc As Object
For Each oStory In ActiveDocument.StoryRanges
    oStory.Fields.Update
Next oStory
For Each oToc In ActiveDocument.TablesOfContents
    oToc.Update
Next oToc

'Rebold for looks.
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "^d seq AppL"
    .Replacement.Text = ""
    .Replacement.Font.Bold = True
    .Forward = True
    .Wrap = wdFindContinue
    .MatchWholeWord = True
End With
Selection.Find.Execute Replace:=wdReplaceAll

'Hide field codes.
ActiveDocument.ActiveWindow.View.ShowFieldCodes = False

Application.ScreenUpdating = True
End Sub
1

Вместо использования поля SEQ, которое вы затем добавляете в закладки вручную, вы можете просто создать наброски с пронумерованными стилями для основной нумерации приложения.

Затем вы можете использовать либо:

  • поле LISTNUM (которое будет автоматически последовательно нумероваться в приложении);
  • комбинация поля STYLEREF (для номера приложения - автоматически подбирается в зависимости от того, в каком приложении вы находитесь) и существующего поля SEQ (для номера уравнения); или же
  • перекрестная ссылка (для номера приложения) и существующее поле SEQ (для номера уравнения).

Обратите внимание, что если вы используете поля STYLEREF или перекрестные ссылки, вам нужно добавить переключатель "\t", чтобы он отображал только букву приложения (то есть "A", а не "Приложение A" - как при настройке схемы). для нумерации наберите приложение в текстовом поле "Введите форматирование для номера" перед добавлением поля).

Я бы использовал поле LISTNUM (а не комбинации полей). Для этого параметра письмо приложения будет настроено на автоматическое отображение с помощью параметра "Включить номер уровня из" уровня 1.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .