Я пришел к решению, используя функцию предварительной обработки. Пара ключ/значение добавляется к родительскому узлу. Названный «headline_level», он позже упоминается дочерним элементом, и добавляется +1. Это число присваивается переменной ветки в качестве номера заголовка, "headline_level" увеличивается на 1 для дочернего элемента, если у него есть дочерние элементы.
На этом изображении мы видим, что родительский «офис» извлекает дочерние узлы в качестве полей.

Диаграмма уровня
Родитель (h1)
|_ Ребенок (h2) (см. изображение)
   |_ Внук (h3)
      |_ Великий внук (h4)
Функция предварительной обработки для темы
функция THEME_preprocess_HOOK(&$переменные) {
  $узел = $переменные['узел'];
    /**
     * Родительский уровень заголовка 
     * Отображает логическую структуру заголовка
     * Применяет более высокое значение к 'headline_level' для подчиненных типов контента; используется в '/templates/node--HOOK.html.twig'
     */
    если ($node->_referringItem) {
      // Переменные
      $счетчик = 1; // начать уровень с 1
      
      // Добавляем 'headline_level' к узлу HOOK
      $node->headline_level = $counter;
      $parentHeadline = $node->_referringItem->getEntity()->headline_level;
      
      // Проверяем узел на $parentHeadline, иначе $counter, устанавливаем переменную twig
      если (isset($parentHeadline)) {
        // Увеличиваем 'headline_level' на 1
        ++$родительский заголовок; // добавить 1
        $node->headline_level = $parentHeadline;
        $variables['office_headline_level'] = $parentHeadline; 
      } еще {
        $variables['headline_level'] = $counter;
      }
    }
Шаблон Twig для типа контента
  <div>
    <h{{ headline_level ?: 2 }}>{{ label }}</h{{ headline_level ?: 2 }}>
    {{ content.field_people }}
  </div>
Как упоминалось в комментариях, эти офисы должны были быть таксономией. Однако они были созданы как типы контента и на них ссылаются поля.