“可选”包接受变量参数

“可选”包接受变量参数
\documentclass[12pt]{article}
\usepackage[test]{optional}

\begin{document}
\def\optname{test}
\optname  \\  % Prints "test"
\opt{\optname}{
    TEST    % does nothing
}\\
\opt{test}{
    TEST 2    % behaves as expected
}
\end{document}

上面的最小示例使用“可选”包来编译同一文档的不同版本。现在我想扩展它,使命令\opt使用预定义变量来确定在哪个版本中编译文档的哪个部分。问题是,它不接受变量。我觉得这是某种扩展问题,但我还没有找到任何解决方案。

答案1

的参数\opt可以通过 进行扩展\expandafter。然后宏将test直接看到 ,而不是宏中隐藏的选项\optname

\documentclass[12pt]{article}
\usepackage[test]{optional}

\begin{document}
\def\optname{test}
\optname  \\  % Prints "test"
\expandafter\opt\expandafter{\optname}{
    TEST
}\\
\opt{test}{
    TEST 2    % behaves as expected
}
\end{document}

相关内容