Zeichnen eines anpassbaren Rechtecks ​​in Tikz

Zeichnen eines anpassbaren Rechtecks ​​in Tikz

Ich habe diesen Code, den ich vor einiger Zeit von dieser Site erhalten habe (leider kenne ich die genaue Quelle nicht). Damit kann ich einen Multiple-Choice-Antwortbogen erstellen.

Ich habe es teilweise geändert und möchte wissen, wie ich ein anpassbares Rechteck um die Blasen zeichne, wie unten gezeigt.

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

Ergebnisse

Antwort1

Wenn Sie Ihren Code weiterhin verwenden möchten, funktioniert diese Lösung.

Im Grunde habe ich Ihren Befehl in etwas anderes umbenannt und in einen anderen eingefügt, \newcommandder später die Felder hinzufügt, die Sie durch Ändern der Rahmenfarbe oder -breite anpassen können.

Ich habe Ihren \foreachBefehlen einen Zähler hinzugefügt und diesen verwendet, um Ihre Knoten zur besseren Referenz umzubenennen row-column. Anschließend habe ich diese verwendet, um die für die Boxen benötigten Anker zu erhalten.

Diese Lösung setzt Folgendes voraus:

  • dass Sie weiterhin 4 Antworten verwenden, d. h.A, B, C, D
  • dass Sie dieses Format weiterhin für das Cheatsheet verwenden werden

Wenn Sie also weitere Anpassungen wünschen, ist das möglich, aber ich würde Ihren Code lieber von Grund auf neu erstellen, damit ich sicher bin, dass er robust ist und für andere Anwendungsfälle funktioniert.

Notiz:Bei Änderung der Fragenanzahl ist eine zweimalige Kompilierung erforderlich!

Ausgabe

Bildbeschreibung hier eingeben

Code

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

verwandte Informationen