Вопрос или проблема
Я пытаюсь создать файл 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): если они существуют, используется соответствующий текстовый макрос; если нет, появляется короткое имя автора.
Эта структура кода обеспечит корректное отображение авторов и участников в соответствии с вашими требованиями относительно первого и последующих упоминаний в тексте.