\begin{tabu}에서 문자열 변수를 형식 문자열로 사용

\begin{tabu}에서 문자열 변수를 형식 문자열로 사용

다음과 같은 문제가 있습니다. 패키지를 사용하여 tabu테이블을 생성하고 있지만 다음과 같은 형식 문자열 대신 \begin{tabu}{ccc}다음과 같은 형식 문자열을 사용하고 싶습니다(문자열 변수로): \begin{tabu}{\reptemp}.

내 코드는 다음과 같습니다.

\documentclass{article}
\usepackage{forloop,tabu}

\begin{document}

\def\reptemp{}      

\newcounter{ct}

    \forloop{ct}{1}{\value{ct} < 5}%
    {%
        \g@addto@macro\reptemp{c}
    }

\begin{tabu}{\reptemp}
\end{tabu}

\end{document}

그리고 다음과 같은 컴파일 오류가 발생합니다.

! Package array Error: Illegal pream-token (\reptemp): 'c' used.

이 문제를 어떻게 해결할 수 있는지에 대한 조언이 있기를 바랍니다.

답변1

환경 tabu은 프리앰블 인수를 확장하지 않습니다.

\documentclass{article}
\usepackage{forloop,tabu}

\def\reptemp{}
\makeatletter
\newcounter{ct}

    \forloop{ct}{1}{\value{ct} < 5}%
    {%
        \g@addto@macro\reptemp{c}
    }
\makeatother

\newenvironment{xtabu}[1]
  {\begingroup\edef\x{\endgroup
   \unexpanded{\begin{tabu}}{\unexpanded\expandafter{#1}}}\x}
  {\end{tabu}}


\begin{document}
\begin{xtabu}{\reptemp}
1&2&3&4
\end{xtabu}
\end{document}

답변2

매크로를 환경에 전달하기 전에 확장해야 합니다.

\def\starttabu#1{\begin{tabu}{#1}}

\expandafter\starttabu\expandafter{\reptemp}

관련 정보