MS-Word: перекрестная ссылка на пользовательский тип ссылки - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь добавить перекрестную ссылку в поле SEQ.
Мой документ содержит «точечные заголовки», что означает, что между двумя элементами заголовка пользователь может добавить расширение (между 1.1 и 1.2 может быть 1.1A, 1.1B, ...)

Вот как выглядит код заголовка точки:
{STYLEREF "HEADING 2" \N}{SEQ "HEADING 2 POINT" \* ALPHABETIC \S 2}
Что приводит к: 1.1A

Я хочу иметь возможностьсделать перекрестную ссылку на заголовок точки.
Несмотря на то, что я могу установить тип ссылки на «Заголовок», я не могу найти, как связать его с пользовательским элементом.

Поиск в Интернете не выявил какого-либо решения, но есть некоторые подсказки о том, что это возможно:

  • Этот веб-сайт , который объясняет форматирование перекрестных ссылок, содержитизображение с пользовательским типом (Моя новая подпись).
  • Описание Microsoft DOC для ReferenceType: The type of item for which a cross-reference is to be inserted. Can be any WdReferenceType or WdCaptionLabelID constant или пользовательская метка подписи .

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

Спасибо!

Обновление:

Я попытаюсь описать мои ограничения и среду.
Заголовки 1-9 используются внутри MultiУровень элемента списка, следовательно, они имеют собственный стиль.
Они не могут быть изменены.

Для конкретной задачи, которая описана и дана ответ здесь , я создал то, что я называю «Заголовки точек».
«Заголовки точек» в основном являются расширением, которое пользовательможно добавить между многоуровневой нумерацией с помощью макроса VBA.
Допустим, у меня есть два элемента заголовка 2 (1.1, 1.2), пользователь может добавить 1.1A, затем 1.1B и т. д.
Пользователь может добавлять точечные заголовки от уровня 2 до уровня 5.
Их стиль «Заголовок 2», «Заголовок 3 очка» и т. Д., И каждый из них основывается на соответствующем заголовке.

Как описано выше, в конечном итоге в документе поле слова имеет следующую структуру: {STYLEREF "HEADING 2" \N}{SEQ "HEADING 2 POINT" \* ALPHABETIC \S 2}.

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

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

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

После некоторых исследований, вот мой ответ.Надеюсь, это поможет некоторым будущим зрителям.

Private Sub createPointHeader(pointLevel As Integer, Optional appendixPrefix As String = "")
Dim sQuote As String, referencedStyle As String, captionName As String
sQuote = Chr(34)
referencedStyle = appendixPrefix & "Heading " & pointLevel
captionName = referencedStyle & " Point"
With Selection
    .Fields.Add .Range, wdFieldEmpty, "StyleRef " & sQuote & referencedStyle & sQuote & " \n", False
    .Collapse wdCollapseEnd
    CaptionLabels.Add (captionName)
    .InsertCaption Label:=captionName, ExcludeLabel:=True
    ' Select the created field
    .MoveLeft Count:=1, Extend:=True
    ' Replace the syntax from Arabic to Alphabetic
    .Fields.ToggleShowCodes
    With .find
        .Text = "ARABIC"
        .Forward = False
        .Wrap = wdFindStop
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute
        If .Found = True Then
            Selection.Range.Text = "ALPHABETIC \s " & pointLevel
        End If
    End With

    .Fields.ToggleShowCodes
    .Fields.Update
    .MoveRight Count:=1
    .InsertAfter vbTab
    .Collapse wdCollapseEnd
    ' Apply style after .InsertCaption, because it changes the style to Caption
    .Style = ActiveDocument.Styles(referencedStyle & " Point")
    End With
End Sub

Несколько замечаний

  • Я опираюсь на два стиля: заголовок (2-5) и заголовок приложения (2-5).Это причина для необязательного appendixPrefix в качестве дополнительной переменной.
  • CaptionLabels.Add, как я проверял, может получить то же значение.Не нужно заранее проверять, существует ли он.
  • Selection.InsertCaption автоматически меняет стиль на Заголовок .Вот почему я применяю изменение стиля в конце.

Результат

  • Вот как Point Heading 2 выглядит так:
    {STYLEREF "HEADING 2" \N"}{SEQ HEADING_2_POINT \* ALPHABETIC \S 2}

  • Снимок документа с точечными заголовками Point Headings example

  • И, наконец, по запросу, перекрестная ссылка на заголовки Точек из поля Перекрестная ссылка Cross reference dialog box

0 голосов
/ 10 октября 2018

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

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

Я предполагаю, что мы не можем изменить стили «Заголовок 1» на «Заголовок 9».Если вы сможете, то сможете адаптировать приведенное ниже предложение для использования только со стилями «Заголовок 1» и «Стиль 9».

Вам потребуется создать несколько новых стилей.Я использовал следующие стили

Name                   Based on Style  Outline level

Heading Point 1        Heading 1          1  
Heading Point 2        Heading 2          2  
Heading Point 2 Ext    Heading 2          3
Heading Point 3        Heading 3          4
Heading Point 3 Ext    Heading 3          5
Heading Point 4        Heading 4          6
Heading Point 4 Ext    Heading 4          7
Heading Point 5        Heading 5          8
Heading Point 5 Ext    Heading 5          9

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

Далее создайте новый многоуровневый список.Назовите список «PointNumbering» (потому что, если вы сделаете это, вы можете идентифицировать список по имени в VBA, если вам понадобится эта возможность).Свяжите стили «Точка заголовка 1» с «Точкой заголовка 5 Ext» с уровнями от 1 до 9 последовательности нумерации (например, уровень структуры 1 соответствует уровню 1 в последовательности нумерации и т. Д.).

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

Level Number style    format levels*   Final Appearance
1     1,2,3,             1                 1
2     1,2,3              1.2               1.1
3     A,B,C              1.23              1.1A
4     1,2,3              1.2.4             1.1.1
5     A,B,C              1.2.45            1.1.1A
6     1,2,3              1.2.4.6           1.1.1.1
7     A,B,C              1.2.4.67          1.1.1.1A
8     1,2,3              1.2.4.6.8         1.1.1.1.1
9     A,B,C              1.2.3.6.89        1.1.1.1.1A
  • Фактические уровни выбираются из выпадающего списка и отображаются как «1» в поле формата номера.Это делает неправильную нумерацию довольно легкой, поэтому будьте осторожны.Последнее число на каждом уровне можно получить, выбрав числовой формат в поле «Стиль номера для этого уровня».

После того, как вы настроили свои стили и убедились, что они связаны с вышеуказанной нумерациейСхема, вам нужно настроить стили, используемые для заголовков в вашем текущем документе.

Выполните поиск и замену, чтобы выполнить следующие замены стилей

Current Style        New Style
Heading 1            Heading Point 1
Heading 2            Heading Point 2 
Heading 3            Heading Point 3
Heading 4            Heading Point 4 
Heading 5            Heading Point 5 

Затем для каждого из ваших расширенных заголовков гдев настоящее время вы создаете нумерацию с использованием стилей ref и поле seq, удалите поля и примените соответствующие заголовки Ext.

Таким образом, для нумерации A, B, C после «Точки 2 курса» примените «Точки 2 курса»'style.

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

Если вы документируете заголовки на уровне 6 заголовка и ниже заголовка после.В пункте 5 Ext вы можете использовать стили заголовков (с заголовка 6 по заголовок 9) как обычно.Однако каждый раз, когда вы используете заголовок 6, вам нужно будет вручную сбросить номер.Я думаю, что это более простая задача, чем просить пользователей вставить несколько полей styleref и seq, поскольку вы просто выбираете, затем щелкаете правой кнопкой мыши по номеру заголовка и затем нажимаете кнопки, чтобы включить «Расширенное значение (номер пропуска)», которое позволяет вам сбросить любой уровеньВаш текущий номер заголовка.

Если впоследствии вам потребуется создать поле TOC для вашего документа, вам теперь нужно будет использовать переключатель \ t и предоставить список стилей и номер уровня, который будет использоваться для стиля в TOC.например, {toc \ t "Направление 1,1, Направление 2,2, Направление 2 Ext, 2, Направление 3,3, Направление 3 Ext, 3 ..... и т. д.}

Я создал и протестировал все вышеперечисленное в документе Word.

enter image description here

...