Определение первого вхождения текстовой цитаты.

Вопрос или проблема

Я пытаюсь создать файл CSL, который использует имена авторов при первом упоминании в тексте, но имена участников при всех последующих упоминаниях (если участник существует). Какое условие мне нужно проверить в блоке cs:if, чтобы этого добиться?

Ниже приведен фрагмент раздела цитирования моего CSL.

<citation>
  <sort />
  <layout>
    <choose>
      <!-- Мне нужна помощь в получении условия для следующей строки -->
      <if match="УСЛОВИЕ ДЛЯ ПЕРВОГО УПОМИНАНИЯ В ТЕКСТЕ">
        <text macro="author-short"/>
      </if>
      <else>
        <choose>
          <!-- 
            Используйте участника для последующих цитирований, если участник существует,
            в противном случае используйте короткое имя автора.
          -->
          <if match="any" variable="contributor">
            <text macro="author-contrib"/>
          </if>
          <else>
            <text macro="author-short"/>
          </else>
        </choose>
      </else>
    </choose>
  </layout>
</citation>

Ответ или решение

Для того чтобы создать CSL-файл, который будет использовать имена авторов при первом упоминании в тексте и имена участников (contributors) при последующих упоминаниях (если участники существуют), вам необходимо определить условие для первого встраиваемого цитирования.

В CSL (Citation Style Language) вы можете использовать атрибут citation с атрибутом first для распознавания первого упоминания. Если первое упоминание соответствует условиям, вы можете отобразить имена авторов, а для остальных упоминаний использовать имена участников (если таковые имеются).

Вот как можно настроить ваш фрагмент кода:

<citation>
  <sort/>
  <layout>
    <choose>
      <!-- Условие для проверки первого встраиваемого цитирования -->
      <if match="first">
        <text macro="author-short"/>
      </if>
      <else>
        <choose>
          <!-- Используйте contributor для последующих цитирований, если он существует -->
          <if match="any" variable="contributor">
            <text macro="author-contrib"/>
          </if>
          <else>
            <text macro="author-short"/>
          </else>
        </choose>
      </else>
    </choose>
  </layout>
</citation>

В этом коде match="first" используется для проверки, является ли данное цитирование первым вхождением в тексте. Если это так, отобразится текстовый макрос для короткого имени автора. В противном случае выполняется проверка на наличие участников (contributors): если они существуют, используется соответствующий текстовый макрос; если нет, появляется короткое имя автора.

Эта структура кода обеспечит корректное отображение авторов и участников в соответствии с вашими требованиями относительно первого и последующих упоминаний в тексте.

Оцените материал
Добавить комментарий

Капча загружается...