단일 인수를 여러 부분으로 분할

단일 인수를 여러 부분으로 분할

A\!\!_B\!C수학 모드의 명령을 매크로로 정의하고 싶습니다 . 다음을 사용하고 있습니다.

\newcommand{\cmp}[3]{#1\!\!_#2\!#3}

불행히도 누락이 있다는 오류가 발생합니다 {}. 어떤 힌트라도 감사하겠습니다.

하나의 인수만으로 Mathematica와 같은 구문을 쉼표로 나누어 얻을 수 있는 가능성이 있습니까?

답변1

예를 들어:

\def\cmp#1{\cmpA#1,}
\def\cmpA#1,#2,#3,{{#1}\!\!_{#2}\!{#3}}

$a = \cmp{A,B,C}$

그런데 이해가 안 돼요. 왜 그 추악한 글자 덩어리가 필요한가요?

답변2

원래 명령에는 세 가지 인수를 제공해야 한다는 것을 기억해야 합니다.

패키지를 사용하면 xparse주어진 기호(여기서는 쉼표)에서 하나의 인수를 분할할 수 있으므로 Mathematica에서 알고 있는 구문을 사용할 수 있습니다.

출력이 약간 이상해 보이지만 이는 다른 문제입니다.

\documentclass{article}
\usepackage{xparse}
\newcommand{\cmp}[3]{#1\!\!_{#2}\!#3}
\NewDocumentCommand{\cmpA}{  >{\SplitArgument{2}{,}} m}
{\cmp#1}%<- feeding the three arguments to the original command

\begin{document}
\[ \cmp{A}{B}{C} \]
\[ \cmpA{A,B,C} \]
\end{document}

관련 정보