Управление форматированием полей seq в уравнениях слова

607
Aze

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

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

Appendix []: Example 

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

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

y = mx + b #(.) 

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

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

1

2 ответа на вопрос

1
Aze

Я не смог найти решение проблемы - я считаю, что это ошибка в 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
Tanya

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

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

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

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

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

enter image description here

Похожие вопросы