Recibo un error al pasar la variable bool en mi propio archivo de estilo

Recibo un error al pasar la variable bool en mi propio archivo de estilo

Escribí un paquete para personalizar mis notas a pie de página. Por ahora sólo importa una característica: quiero dar un parámetro bool para cambiar la fuente de mis notas al pie.

El archivo de estilo se ve así:

\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

No pasar el valor condensado en el preámbulo de mi documento funciona bien, pero cuando uso: \usepackage[condensed=true]{AFWfnotetext}en mi documento aparece el siguiente mensaje:

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

Soy nuevo en la programación en LaTeX y no pude entender qué está pasando.

Espero que puedas ayudarme.

gracias de antemano

Respuesta1

El kernel de LaTeX no admite opciones de valores clave. Por lo tanto, existen paquetes como kvoptionsel que has utilizado. Luego, en lugar de \ProcessOptionsno conocer las opciones de valores clave, \ProcessKeyvalOptionsse debe usar el comando del paquete like.

\ExecuteOptions{condensed}No tiene sentido aquí, porque \DeclareBoolOption[true]{condensed}ya inicializa la opción con true.

El orden de declaración de opciones, uso y acciones de opciones está desordenado.

  • Primero: Las opciones están definidas ( \SetKeyvalOptions, \DelareBoolOption).
  • Segundo: Se procesan las opciones ( \ProcessOptions)
  • Tercero: En la fase de evaluación, el código se ejecuta dependiendo de los valores de las opciones ( \ifAFW@condensed).

Respuesta2

Puedes usar 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}} }
 }

Nota: lo usé \itshapeporque no lo sé \textcn(el paquete debería proporcionar la definición).

Aquí hay un archivo de prueba, con una altura de texto reducida para hacer una imagen más pequeña. Tenga en cuenta que \footnotese puede utilizar el argumento opcional to , lo cual no es posible con su enfoque.

\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}

ingrese la descripción de la imagen aquí

El resultado con condensed, condensed=trueo sin ninguna opción, es

ingrese la descripción de la imagen aquí

información relacionada