Класс документа:testclass.cls

Класс документа:testclass.cls

Я пишу documentclass, который загружает несколько пакетов по умолчанию. Я хочу дать пользователю возможность передавать параметры этим пакетам с помощью параметра documentclass. Поскольку большинство пакетов имеют несколько параметров, мне приходится передавать эти параметры как некий список, что в данный момент не работает.

Есть ли (простой) способ это реализовать?

Вот мой MWE с примером класса, который должен передавать параметры в amsmath.

Класс документа:testclass.cls

\RequirePackage{expl3, l3keys2e}

\ExplSyntaxOn

\keys_define:nn {testclass} {
  amsmathoptions .tl_gset:N = \g_testclass_amsmathoptions_tl,
  amsmathoptions .initial:n = intlimits
}

\DeclareOption*{%
  \PassOptionsToClass{\CurrentOption}{article}%
}

\ProcessOptions
\ProcessKeysOptions{testclass}

\LoadClass{article}

\RequirePackage[\g_testclass_amsmathoptions_tl]{amsmath}

\ExplSyntaxOff

Пример 1: Передача единственного варианта (работает)

\documentclass[amsmathoptions=nonamelimits]{testclass}

\begin{document}

Integral: 
\[
  \int_a^b f(x) \mathop{}\!\mathrm{d}x
\]

Operators: 
\[
  \lim_{x \rightarrow \infty} f(x)
\]
\end{document}

Результат 1

Пример

Пример 2: Передача нескольких вариантов (не работает)

\documentclass[amsmathoptions={nointlimits, nonamelimits}]{testclass}

\begin{document}

Integral: 
\[
  \int_a^b f(x) \mathop{}\!\mathrm{d}x
\]

Operators: 
\[
  \lim_{x \rightarrow \infty} f(x)
\]
\end{document}

Результат 2

[...]
(/usr/local/texlive/2017/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
File: l3pdfmode.def 2017/03/18 v L3 Experimental driver: PDF mode
\l__driver_color_stack_int=\count162
\l__driver_tmp_box=\box41
))
(/usr/local/texlive/2017/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
Package: l3keys2e 2017/12/16 LaTeX2e option processing using LaTeX3 keys
)
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.15 \ProcessKeysOptions
{testclass}
You're in trouble here. Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.
Missing character: There is no , in font nullfont!
! You can't use `macro parameter character #' in horizontal mode.
\@removeelement #1#2#3->\def \reserved@a ##1,#1,##
2\reserved@a {##1,##2\rese...
l.15 \ProcessKeysOptions
{testclass}
Sorry, but I'm not programmed to handle this case;
I'll just pretend that you didn't ask for it.
If you're in the wrong mode, you might be able to
return to the right one by typing `I}' or `I$' or `I\par'.
Missing character: There is no 2 in font nullfont!
)
Runaway argument?
{##1,##2\reserved@b }\def \reserved@b ##1,\reserved@b ##2\reserved@b \ETC.
! File ended while scanning use of \reserved@a.
<inserted text>
\par
l.2 ^^M
I suspect you have forgotten a `}', causing me
to read past where you wanted me to stop.
I'll try to recover; but if the error is serious,
you'd better type `E' or `X' now and fix your file.
Overfull \hbox (20.0pt too wide) in paragraph at lines 15--2
[...]

Связанный контент