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

相关内容