pgfopts를 사용할 때 (단지) 다른 옵션 전달

pgfopts를 사용할 때 (단지) 다른 옵션 전달

새로운 옵션으로 클래스를 사용자 정의하고 이전 옵션을 유지하고 그 중 일부를 사용할 때 pgfopts(따라서 pgfkeys)를 사용하고 싶습니다.

다음은 새로운 옵션으로 "article"을 확장하고 "a5paper" 옵션도 설정하는 "exa" 클래스를 사용한 간단한 예입니다.

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

세 가지 옵션은 여기서 의도한 대로 작동합니다. 클래스에 의해 설정된 "a5paper", "article"로 전송된 "twocolumn", 그리고 새로운 옵션 "lastword". 그러나 사용되지 않은 전역 옵션 ["lastword=bar]"에 대한 경고가 표시됩니다.

ProcessPgfOptions가 처리한 모든 옵션을 제거하여 나머지만 "기사"로 전송되도록 하려면 어떻게 해야 합니까?

답변1

옵션 설정을 위해 두 가지 방법을 혼합하고 있으며 이로 인해 경고가 발생합니다.

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

관련 정보