다음 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
4
Put이 이전 행의 끝이 아닌 새 행의 시작 부분에 있는 이유는 무엇입니까 ? 어떻게 해결할 수 있나요?
나는 이미 \\
매크로 대신에 테이블 형식 내부를 배치하면 작업이 수행된다는 것을 확인했습니다.
\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}