Определение многоколоночности с помощью макроса с необязательным аргументом

Определение многоколоночности с помощью макроса с необязательным аргументом

Я пытаюсь определить макрос для формы быстрого доступа \multiline{1}{<pcolumn type>}{\textbf{text}}:

\documentclass[12pt,border=1mm,preview]{standalone}

\newcommand\mcbf[2]{\multicolumn{1}{#1}{\textbf{#2}}}
    \begin{document}
\begin{tabular}{lr}
    \hline
\mcbf{|c|}{AAA}  &   \mcbf{c|}{BBB}   \\ \hline
\end{tabular}
    \end{document}

Которые работают так, как и ожидалось. Поскольку в большинстве случаев я использую тот же спецификатор столбца, я пытаюсь переопределить этот макрос так, чтобы тип столбца по умолчанию был, например c|:

\documentclass[12pt,border=1mm,preview]{standalone}

\newcommand\xmcbf[2][c|]{\multicolumn{1}{#1}{\textbf{#2}}}

    \begin{document}
\begin{tabular}{lr}
\xmcbf[|c|]{AAA} &   \mcbf{BBB}  \\ \hline
C                &   D           \\ \hline
\end{tabular}
    \end{document}

Что дает ошибку:

\multispan ->\omit
                  \@multispan

Что я упускаю в \newcommandопределении? Мой (вероятно, неуклюжий) поиск в SE не дает полезной информации.

решение1

Вам нужна командарасширятьк\multicolumn

\documentclass[12pt,border=1mm,preview]{standalone}
\usepackage{xparse}

\DeclareExpandableDocumentCommand\xmcbf{O{c|}m}{\multicolumn{1}{#1}{\textbf{#2}}}

    \begin{document}
\begin{tabular}{lr}
\xmcbf[|c|]{AAA} &   \xmcbf{BBB}  \\ \hline
C                &   D           \\ \hline
\end{tabular}
    \end{document}

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