이 매크로가 테이블의 요소를 잘못된 행에 배치하는 이유는 무엇입니까?

이 매크로가 테이블의 요소를 잘못된 행에 배치하는 이유는 무엇입니까?

다음 MWE를 고려하십시오.

\documentclass[a4paper,10pt]{article}

\newcommand{\macro}[2][]{%
    & something & #2 & #1 \\
}

\begin{document}
\begin{tabular}{lccc}
\macro{3}{4}
\end{tabular}

\end{document}

그것이 생성하는 출력은 다음과 같습니다.

    something    3
4

4Put이 이전 행의 끝이 아닌 새 행의 시작 부분에 있는 이유는 무엇입니까 ? 어떻게 해결할 수 있나요?

나는 이미 \\매크로 대신에 테이블 형식 내부를 배치하면 작업이 수행된다는 것을 확인했습니다.

\documentclass[a4paper,10pt]{article}

\newcommand{\macro}[2][]{%
    & something & #2 & #1
}

\begin{document}
\begin{tabular}{lccc}
\macro{3}{4}\\
\end{tabular}

\end{document}

그러나 이것은 내가 원하는 것이 아닙니다. 나는 내부에서 사용하는 새로운 환경을 정의하고 있지만 tabular그 인터페이스가 퍼팅에 의존하는 것을 원하지 않고 명시적 //으로 &매크로 안에 숨겨지길 원합니다.

답변1

매크로 \macro(sic!)는 선택적 인수를 갖도록 정의됩니다. 이것이 누락된 경우 호출은 \macro{3}{4}다음과 동일 \macro[]{3}하며 다음 표 행에 대한 그림이 4읽혀집니다.

'잘못된' 사용법의 열 이동이 명확하게 표시됩니다. 3요청한 세 번째 열이 아닌 네 번째 열에 있습니다.

\documentclass[a4paper,10pt]{article}

\newcommand{\macro}[2][]{%
    & something & #2 & #1 \\
}

\begin{document}
Does not work

\begin{tabular}{lccc}
\macro{3}{4}
\end{tabular}

Works

\begin{tabular}{lccc}
\macro[3]{4}
\end{tabular}

\end{document}

여기에 이미지 설명을 입력하세요

답변2

선택적 인수 없이 매크로를 원하는 경우:

\documentclass[a4paper,10pt]{article}

\newcommand{\macro}[2]{% notice the lack of the second brackets here
    & something & #2 & #1 \\
}

\begin{document}
\begin{tabular}{lccc}
\macro{3}{4}
\end{tabular}

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보