Tikz에서 조정 가능한 직사각형 그리기

Tikz에서 조정 가능한 직사각형 그리기

나는 이 사이트에서 언젠가 얻은 이 코드를 가지고 있습니다(죄송하지만 정확한 소스를 모릅니다). 객관식 답안지를 만들 수 있습니다.

어느 정도 수정했는데 아래와 같이 거품 주위에 조정 가능한 직사각형을 그리는 방법을 알고 싶습니다.

내 MWE:

\documentclass{exam}
\usepackage{tikz}
\usepackage{multicol}

\newcommand\encircle[2][]{% 
    \indent\tikz[baseline=(X.base)]
    \node (X)    [draw, shape=circle, inner sep=1pt, #1] {\strut$#2$};
}

\ExplSyntaxOn

\newcommand{\answerspace}[1]{%
    
            \foreach \x in {1,...,#1}  {%
            \noindent\hspace*{10mm}\llap{\textbf{\x}}\hspace{5mm}\space
            \foreach \y in {1,2,3,4} {% 
                \l_encircle {\x}{\y} \ %
            }\newline\newline%
        }%

    }


\cs_new_protected:Npn \l_encircle #1#2 {    { \encircle{\int_to_Alph:n{#2}} }
}
\ExplSyntaxOff

\begin{document}
\begin{center}

\begin{multicols}{2}
\normalsize 
\answerspace{24}
\end{multicols}

\end{center}



\end{document}

결과

답변1

코드를 계속 사용하려면 이 솔루션이 효과적입니다.

\newcommand기본적으로 명령의 이름을 다른 것으로 바꾸고 나중에 상자를 추가할 다른 명령 안에 넣었습니다 . 상자는 테두리 색상이나 너비를 변경하여 사용자 정의할 수 있습니다.

귀하의 명령에 카운터를 추가 \foreach하고 이를 사용하여 더 나은 참조를 위해 노드 이름을 변경했습니다 row-column. 그런 다음 이를 사용하여 상자에 필요한 앵커를 얻었습니다.

이 솔루션은 다음을 가정합니다.

  • 즉, 4개의 답변을 계속 사용하게 됩니다.A, B, C, D
  • 치트시트에 이 형식을 계속 사용할 것입니다.

따라서 추가 사용자 정의를 원한다면 가능하지만 코드가 강력하고 다른 사용 사례에서도 작동할 수 있도록 코드를 처음부터 다시 작성하는 것이 좋습니다.

메모:문제 개수를 변경하면 두 번 컴파일해야 합니다!

산출

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

암호

\documentclass{exam}
\usepackage{tikz}
\usepackage{multicol}

\newcommand\encircle[2][]{% 
    \indent\tikz[baseline=(\nx-\ny.base), remember picture]{
    \node (\nx-\ny) [draw, shape=circle, inner sep=1pt, outer sep=10pt, #1] 
    {\strut$#2$};
    }
}

\ExplSyntaxOn

\newcommand{\createrows}[1]{%
            \foreach \x [count=\nx] in {1,...,#1}  {%
            \noindent\hspace*{10mm}\llap{\textbf{\x}}\hspace{5mm}\space
            \foreach \y [count=\ny] in {1,2,3,4} {% 
                \l_encircle {\x}{\y} \ %
            }\newline\newline%
        }%
    }
\cs_new_protected:Npn \l_encircle #1#2 {    { \encircle{\int_to_Alph:n{#2}} }
}
\ExplSyntaxOff

\newcommand\answerspace[2][]{%
\createrows{#2}%
\begin{tikzpicture}[overlay, remember picture]
    \pgfmathtruncatemacro\halfofrows{#2/2}
    \pgfmathtruncatemacro\secondhalfofrows{#2/2+1}
    \draw[line width=1pt,#1] (1-1.north west) rectangle (\halfofrows-4.south east);
    \draw[line width=1pt,#1] (\secondhalfofrows-1.north west) rectangle (#2-4.south east);
\end{tikzpicture}
}

\begin{document}
\begin{multicols}{2}
    \centering
\normalsize 
\answerspace{24}
\end{multicols}
\end{document}

관련 정보