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
  • チートシートにこの形式を使い続けるつもりです

したがって、さらにカスタマイズしたい場合はそれが可能ですが、コードを最初から再構築して、堅牢で他のユースケースでも機能することを保証することをお勧めします。

注記:質問数を変更する場合は、2回コンパイルする必要があります。

出力

ここに画像の説明を入力してください

コード

\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}

関連情報