
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
kvoptions
el que has utilizado. Luego, en lugar de \ProcessOptions
no conocer las opciones de valores clave, \ProcessKeyvalOptions
se 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é \itshape
porque 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 \footnote
se 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}
El resultado con condensed
, condensed=true
o sin ninguna opción, es