LaTeX3 从包选项到类选项

LaTeX3 从包选项到类选项

您好,请考虑以下例子:

\RequirePackage{ expl3 , xparse , l3keys2e , xfrac  }

\ProvidesExplPackage
  {somewhat}
  {2012/04/29}
  {1}
  {descrr}


  \cs_new_nopar:Npn\font_color{green}

  \keys_define:nn {tgquixoptions} {
   font-color .tl_set:N = \tg_font_color, 
   font-color .default:n =\tl_set:Nn\tg_font_color{white},
   background-color .code:n=#1, 
   background-color .default:n = blue,
   }
  \ProcessKeysOptions{tgquixoptions}

  \message{------------message-----\tl_to_str:N\tg_font_color}

这很有效。但我怎样才能把它变成一个类呢?我试过这个:

\LoadClass{beamer}
\RequirePackage{ expl3 , xparse , l3keys2e , xfrac  }

\ProvidesExplPackage
  {somewhat}
  {2012/04/29}
  {1}
  {descrr}


  \cs_new_nopar:Npn\font_color{green}

  \keys_define:nn {tgquixoptions} {
   font-color .tl_set:N = \tg_font_color, 
   font-color .default:n =\tl_set:Nn\tg_font_color{white},
   background-color .code:n=#1, 
   background-color .default:n = blue,
   }

  \ProcessKeysOptions{tgquixoptions}

  \message{------------message-----\tl_to_str:N\tg_font_color}

似乎 l3 不处理类选项。当像这样调用时:

\documentclass[font-color=somevalue]{somewhat}
%\usepackage[font-color=somevalue]{somewhat}
 \begin{document}
  \frame{
  }
\end{document}

那么我怎样才能让 l3 监听包选项?

答案1

每次加载类时都会处理类选项。因此,如果您想要处理一些包选项,但又要加载另一个类,则需要先处理选项

\ProcessKeysOptions{tgquixoptions}
\LoadClass{beamer}

您可能希望使用该.unknown属性将任何其他选项传递给beamer


您的工作代码如下:

\begin{filecontents}{somewhat.cls}
\RequirePackage{ expl3 , xparse , l3keys2e , xfrac  }

\ProvidesExplClass
  {somewhat}
  {2012/04/29}
  {1}
  {descrr}


  \cs_new_nopar:Npn\font_color{green}

  \keys_define:nn {tgquixoptions} {
   font-color .tl_set:N = \tg_font_color_tl,
   font-color .default:n =white,
   background-color .code:n=#1, 
   background-color .default:n = blue,
   }

  \ProcessKeysOptions{tgquixoptions}

  \LoadClass{beamer}

  \message{------------message-----\tl_to_str:N\tg_font_color_tl}
\end{filecontents}
\documentclass[font-color=somevalue]{somewhat}
%\usepackage[font-color=somevalue]{somewhat}
 \begin{document}
  \frame{
  }
\end{document}

相关内容