tabularray 및 \gappto

tabularray 및 \gappto

새로운 명령으로 \problem수학 학생들을 위한 테스트를 조판하는 데 사용합니다. 때로는 특정 문제에서 얼마나 많은 크레딧을 모을 수 있는지도 포함합니다. 키 를 사용하면 credits모든 것이 잘 작동합니다. 하지만 \task[<credits>]사소한 질문과 그 크레딧을 인쇄할 수 있는 명령 도 있습니다 (아래 MWE 참조). 현재 직면하고 있는 문제는 명령과 함께 제공된 크레딧이 \task한 번이 아닌 여러 번 적용된다는 것입니다. 어떤 팁이 있나요? 감사합니다!


\documentclass[12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xifthen}    
\usepackage{tikz}
\usepackage{tabularray}
  \UseTblrLibrary{booktabs, counter}

\makeatletter
\def\credit{}
\newcounter{WS@credits}
\setcounter{WS@credits}{0}
\newcounter{subtask}
\setcounter{subtask}{1}
\renewcommand{\thesubtask}{\alph{subtask})}
\newcommand{\task}[1][]{%
    \ifthenelse{\isempty{#1}}{%
        \thesubtask%
        \stepcounter{subtask}%
    }{%
        \thesubtask%
        \addtocounter{WS@credits}{#1}%
        \ifnum\arabic{subtask}=1%
            \gappto\credit{(#1~p)}%
        \else%
            \gappto\credit{\\(#1~p)}%
        \fi%
        \stepcounter{subtask}%
    }%
}

\newcommand{\problem@credits}{}
\define@key{problem}{credits}[\problem@credits]{\renewcommand{\problem@credits}{%
    \addtocounter{WS@credits}{#1}%
    (#1~p)%
    }%
}

\newcounter{probctr}
\setcounter{probctr}{1}

\newcommand{\problem}[3][]{
    \setkeys{problem}{#1}%
    \begin{tblr}{colspec={>{\bfseries}lX}, column{1}={leftsep=0ex, rightsep=1.5ex}, column{2}={leftsep=0ex, rightsep=0ex}}
        \tikz[remember picture, baseline=(probctrbox.base)]{%
            \node[anchor=north west] (probctrbox) at (0,0) {A\arabic{probctr}};
        } &
        {#2}%
    \end{tblr}%
    \tikz[remember picture, overlay]{%
        \node at (probctrbox.south) [below, font=\scriptsize\normalfont]{\parbox{7ex}{\centering\ifdefempty{\credit}{\problem@credits}{\credit}}};
    }
    \stepcounter{probctr}
    \setcounter{subtask}{1}
    \renewcommand{\credit}{}
    \renewcommand{\problem@credits}{}
}
\makeatother

\begin{document}
\problem[credits=3]{
Write as power expressions.

\begin{tblr}{colspec={*{2}{>{\bfseries}lX}}, column{odd}={rightsep=0ex}}
    \task & $2\cdot 2\cdot 2\cdot 2$ &
        \task & $3\cdot 3\cdot 3\cdot 3\cdot 3\cdot 3$
\end{tblr}
}{
\begin{tblr}{colspec={*{2}{>{\bfseries}lX}}, column{odd}={rightsep=0ex}}
    \task & $=2^4$ &
        \task & $=3^6$
\end{tblr}
}

\problem{
Write as power expressions.

\begin{tblr}{colspec={*{2}{>{\bfseries}lX}}, column{odd}={rightsep=0ex}}
    \task[1] & $2\cdot 2\cdot 2\cdot 2$ &
        \task[3] & $3\cdot 3\cdot 3\cdot 3\cdot 3\cdot 3$
\end{tblr}
}{
\begin{tblr}{colspec={*{2}{>{\bfseries}lX}}, column{odd}={rightsep=0ex}}
    \task & $=2^4$ &
        \task & $=3^6$
\end{tblr}
}
\end{document}

관련 정보