LaTeX3. Работа с ключами

LaTeX3. Работа с ключами

2025-10-10 · 2 мин. для прочтения

LaTeX3. Работа с ключами.

Содержание

1 Интерфейс \keys_define:nn

1.1 Общая информация

  • Интерфейс \keys_define:nn в LaTeX3 есть инструмент для определения и управления ключами.

  • Синтаксис:

\keys_define:nn { <group name> } { <key definitions> }
  • Параметры:
    • <group name> — имя группы ключей.
      • Это пространство имён, которое помогает избежать конфликтов имён при использовании ключей в разных частях документа или в разных пакетах.
      • Например, mypackage/keys указывает, что ключи принадлежат пакету mypackage.
    • <key definitions> — список определений ключей.
      • Каждый ключ описывается своими свойствами и поведением.
      • В этом списке можно задать:
        • тип ключа (логический, строковый, целочисленный и др.);
        • значение по умолчанию;
        • обработчики, которые будут выполняться при задании ключа;
        • проверки корректности значений, которые передаются ключу.

1.2 Детальное описание работы

1.2.1 Определение типов ключей

  • Логический ключ (bool): принимает значения true или false.
    • Пример: mybool.bool_set:N = \l_mypackage_mybool_bool.
  • Строковый ключ (tl): для хранения текстовых значений.
    • Пример: mystring.tl_set:N = \l_mypackage_mystring_tl.
  • Целочисленный ключ (int): для хранения целых чисел.
    • Пример: myint.int_set:N = \l_mypackage_myint_int.

1.2.2 Установка начальных значений

  • Для каждого ключа можно указать начальное значение с помощью .initial:n.
  • Например:
    mybool.initial:n = { false },
    mystring.initial:n = { Default String },
    myint.initial:n = { 42 }
    

1.2.3 Обработчики ключей

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

1.2.4 Проверка корректности значений

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

1.2.5 Пример полного определения ключей:

\keys_define:nn { mypackage/keys } {
  mybool.bool_set:N = \l_mypackage_mybool_bool,
  mybool.initial:n = { false },
  mystring.tl_set:N = \l_mypackage_mystring_tl,
  mystring.initial:n = { Default String },
  myint.int_set:N = \l_mypackage_myint_int,
  myint.initial:n = { 42 },
  % Дополнительные ключи и их настройки
}

1.2.6 Использование определённых ключей в документе

  • После определения ключей их можно использовать с помощью команды \keys_set:nn:
\keys_set:nn { mypackage/keys } {
  mybool = true,
  mystring = { Custom String },
  myint = 100
}
  • Теперь переменные \l_mypackage_mybool_bool, \l_mypackage_mystring_tl и \l_mypackage_myint_int будут содержать заданные значения.