Como posso essencialmente '\ garantirmath' um \DeclarePairedDelimiter (de `mathtools`)?

Como posso essencialmente '\ garantirmath' um \DeclarePairedDelimiter (de `mathtools`)?

Estou tentando criar um comando delimitador emparelhado que funcionará fora do modo de texto. Não consegui fazer isso simplesmente definindo um novo comando com \ensuremath, então recorri ao uso de \ifmmodeand \@ifstar; no entanto, o código (fornecido abaixo) não funciona conforme o esperado. Alguém sabe como fazer isso? (Eu preferiria que o comando fosse definido por meio \DeclarePairedDelimiterde suas variantes \DeclarePairedDelimiterXe \DeclarePairedDelimiterXPP.)

Sei que muitas vezes é considerado uma má prática confiar em códigos como \ensuremath, mas estou fazendo isso principalmente para a experiência de aprendizado do TeXnical.

\documentclass[12pt, reqno]{amsart}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xparse}
\usepackage{mathtools}
\usepackage[version=3]{mhchem}

\makeatletter
\DeclarePairedDelimiterXPP{\conctext}[1]{\(}{\lbrack}{\rbrack}{\)}{\ce{#1}}
\DeclarePairedDelimiterX{\concmath}[1]{\lbrack}{\rbrack}{\ce{#1}}
\newcommand{\conc}{\ifmmode \@ifstar\concmath*\concmath
                    \else   \@ifstar\conctext*\conctext
                    \fi
}
\makeatother
\begin{document}
The molarity is calculated from \conc{NaOH}, \conc{H3O+}, and \conc{OH-}.
\end{document}

Responder1

Uma abordagem mais simples com xparse:

\documentclass[12pt, reqno]{amsart}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xparse}
\usepackage{mathtools}
\usepackage[version=3]{mhchem}

\DeclarePairedDelimiter{\cebrack}{[}{]}
\NewDocumentCommand{\conc}{sO{}m}{%
  \IfBooleanTF{#1}
   {\ensuremath{\cebrack*{\ce{#3}}}}
   {\ensuremath{\cebrack[#2]{\ce{#3}}}}%
}

\begin{document}
The molarity is calculated from \conc{NaOH}, \conc{H3O+}, and \conc{OH-}.

Test: \conc{H3O+}, \conc*{H3O+}, \conc[\big]{H3O+}, \conc[\Big]{H3O+}.

Test: $\conc{H3O+}, \conc*{H3O+}, \conc[\big]{H3O+}, \conc[\Big]{H3O+}$.

\end{document}

insira a descrição da imagem aqui

A propósito, este é, na minha opinião, um uso legítimo de \ensuremath.

informação relacionada