可选参数中的可选参数导致错误

可选参数中的可选参数导致错误

以下 Latex 因神秘错误而无法构建,第一个错误是Argument of \\bred has an extra }

\documentclass{article}

\usepackage{xparse}
\usepackage{amsmath}

\newcommand{\restr}[2]{{\ifx\\#2\\ #1 \else #1|#2 \fi}}
\newcommand{\opensg}[2][]{\restr{\mathcal{T}\ifx\\#2\\ \else_{#2}\fi}{#1}}
\newcommand{\opens}[1][]{\opensg[#1]{}}
\NewDocumentCommand{\closureg}{ O{\opens} O{P} m }{\overline{#3}(#1)_{#2}}
\NewDocumentCommand{\closure}{ O{} O{P} m }{\closureg[{\opens[#1]}][#2]{#3}}
\newcommand{\bred}[2][\opens]{#2^{#1}}

\begin{document}

$\closure[{\bred[A]{B}}]{C}$

\end{document}

它可以用来$\closure[{\bred{B}}]{C}$代替建造。

问题是什么?我怎样才能让可选参数[A]在这里发挥作用?

答案1

这似乎是一组相当复杂的命令...无论如何,坚持下去\NewDocumentCommand

\documentclass{article}

\usepackage{amsmath}

\NewDocumentCommand{\restr}{mm}{#1\IfBlankF{#2}{|#2}}
\NewDocumentCommand{\opensg}{O{}m}{\restr{\mathcal{T}\IfBlankF{#2}{_{#2}}}{#1}}
\NewDocumentCommand{\opens}{O{}}{\opensg[{#1}]{}}
\NewDocumentCommand{\closureg}{ O{\opens} O{P} m }{\overline{#3}(#1)_{#2}}
\NewDocumentCommand{\closure}{ O{} O{P} m }{\closureg[{\opens[#1]}][#2]{#3}}
\NewDocumentCommand{\bred}{O{\opens}m}{#2^{#1}}

\begin{document}

$\closure[\bred[A]{B}]{C}$

\end{document}

xparse自 2020 年 10 月起,无需加载。

在此处输入图片描述

相关内容