Получаю ошибку при передаче переменной bool в мой собственный файл стилей

Получаю ошибку при передаче переменной bool в мой собственный файл стилей

Я написал пакет для настройки моих сносок. Пока что важна только одна функция: я хочу задать параметр bool для изменения шрифта моих сносок.

Файл стиля выглядит так:

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{AFWfnotetext}[2019/07/07 v1.1 A footnotes]

\RequirePackage{sectsty}
\RequirePackage{kvoptions}

\SetupKeyvalOptions{
    family=AFW,
    prefix=AFW@
}%

\DeclareBoolOption[true]{condensed}
%\ProcessLocalKeyvalOptions*


\let\oldfootnote\footnote

\ifAFW@condensed
    \RenewDocumentCommand{\footnote}{ O{} m }
    {\oldfootnote{\textcn{#2}}}
\else
    \RenewDocumentCommand{\footnote}{ O{} m }
    {\oldfootnote{#2}}
\fi

\ExecuteOptions{condensed}

\ProcessOptions\relax

Если не передавать сжатое значение в преамбуле документа, то все работает нормально, но когда я использую: \usepackage[condensed=true]{AFWfnotetext}в своем документе, я получаю следующее сообщение:

Unknown option `condensed=true' for package `AFWfnotetext'. \ProcessOptions\relax

Я новичок в программировании в LaTeX и не могу понять, что происходит.

Я надеюсь, что вы можете мне помочь.

заранее спасибо

решение1

Ядро LaTeX не поддерживает параметры ключ-значение. Поэтому есть пакеты, подобные kvoptionsтем, которые вы использовали. Тогда вместо \ProcessOptionsthat не знает о параметрах ключ-значение, \ProcessKeyvalOptionsследует использовать команду пакета like.

\ExecuteOptions{condensed}здесь не имеет смысла, поскольку \DeclareBoolOption[true]{condensed}уже инициализирует опцию с помощью true.

Порядок объявления, использования и действий опций нарушен.

  • Во-первых: определены параметры ( \SetKeyvalOptions, \DelareBoolOption).
  • Второе: Варианты обрабатываются ( \ProcessOptions)
  • Третье: На этапе оценки код выполняется в зависимости от значений параметров ( \ifAFW@condensed).

решение2

Вы можете использовать l3keys2e:

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{AFWfnotetext}[2019/07/07 v1.1 A footnotes]

\RequirePackage{l3keys2e}
\RequirePackage{xparse}

\ExplSyntaxOn

\keys_define:nn { AFWfnotetext }
 {
  condensed .bool_set:N = \g_AFWfnotetext_condensed_bool,
  condensed .default:n  = true,
  condensed .initial:n  = true,
 }

\ProcessKeysPackageOptions { AFWfnotetext }

\cs_set_eq:cc { latex@footnotetext } { @footnotetext }

\bool_if:NT \g_AFWfnotetext_condensed_bool
 {
  \cs_set:Npn \@footnotetext #1 { \latex@footnotetext{\textit[#1}} }
 }

Примечание: Я использовал , \itshapeпотому что не знаю о \textcn(пакет должен предоставить определение).

Вот тестовый файл с уменьшенной высотой текста для создания уменьшенной картинки. Обратите внимание, что \footnoteможно использовать необязательный аргумент to, чего нельзя сделать с вашим подходом.

\documentclass{article}

\usepackage[
%  condensed,
%  condensed=true,
  condensed=false,
]{AFWfnotetext}

\setlength{\textheight}{4cm}

\begin{document}

Test\footnote{Test for footnotes}

Test\footnote[4]{Another test}

\end{document}

введите описание изображения здесь

Вывод с опцией condensedили condensed=trueбез нее будет следующим:

введите описание изображения здесь

Связанный контент