Pasar (solo) otras opciones, al usar pgfopts

Pasar (solo) otras opciones, al usar pgfopts

Quiero usar pgfopts (y por lo tanto pgfkeys) al personalizar una clase con nuevas opciones, conservar las antiguas y usar algunas de ellas.

Aquí hay un ejemplo simplificado con una clase "exa" que extiende "artículo" con una nueva opción y también establece la opción "a5paper".

\begin{filecontents}{exa.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{exa}[2014/03/19 exa]
% As "article" with "a5paper" set, and an extra option "lastword".
\RequirePackage{pgfopts}
\pgfkeys{
  /exa/.cd,
  lastword/.code=\AtEndDocument{\par The last word is #1.}
}
\ProcessPgfOptions{/exa}
\PassOptionsToClass{a5paper}{article}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions
\LoadClass{article}
\end{filecontents}

\documentclass[lastword=bar,twocolumn]{exa}

\usepackage{blindtext}
\begin{document}
\blindtext
\end{document}

Las tres opciones funcionan según lo previsto aquí; "a5paper" establecido por la clase, "dos columnas" enviado a "artículo" y la nueva opción "última palabra". Pero da una advertencia sobre la opción global no utilizada ["lastword=bar]".

¿Cómo se pueden eliminar todas las opciones de las que se encargó ProcessPgfOptions, de modo que solo el resto se envíe al "artículo"?

Respuesta1

Estás mezclando los dos métodos para configurar opciones, lo que genera la advertencia.

\begin{filecontents}{exa.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{exa}[2014/03/19 exa]
% As "article" with "a5paper" set, and an extra option "lastword".
\RequirePackage{pgfopts}

%%% initialize the options
\def\exa@classoptions{a5paper}

\pgfkeys{
  /exa/.cd,
  lastword/.code=\AtEndDocument{\par The last word is #1.},
  %%% unknown keys are assumed to be options to be passed to the class
  .unknown/.code={\edef\exa@classoptions{\exa@classoptions,\pgfkeyscurrentname}}
}
\ProcessPgfOptions{/exa}
\LoadClass[\exa@classoptions]{article}

\end{filecontents}

\documentclass[lastword=bar,twocolumn]{exa}

\usepackage{lipsum}
\begin{document}
\lipsum[1-10]
\end{document}

información relacionada