我如何才能将 A、B、C、D 键的 exam-randomizechoices 对齐?

我如何才能将 A、B、C、D 键的 exam-randomizechoices 对齐?

我问这个问题感谢 samcarter评论在此处输入图片描述

\documentclass[12pt,a4paper,answers]{exam}
\usepackage{amsmath}
\usepackage[randomize,overload]{exam-randomizechoices}
\usepackage{tikz}

\newcommand*\circled[1]{\tikz[baseline=(char.base)]{%
        \node[shape=circle, draw, minimum size=1.5em, inner sep=0pt , thick] (char) {#1};}}
\renewcommand\choicelabel{\circled{\Alph{choice}}}
\renewcommand{\questionshook}{%
    \settowidth{\leftmargin}{0pt}}
\renewcommand{\choiceshook}{\settowidth{\leftmargin}{\circled{W}.\hskip\labelsep\hskip 0em}}
\newcommand{\correctchoicelabel}{\fbox{\thechoice}}
\CorrectChoiceEmphasis{\renewcommand{\choicelabel}{\correctchoicelabel}}
\usepackage[left=1.7cm,right=1.7cm,top=1.5cm,bottom=2cm]{geometry}

\begin{document}
    \section{Questions}
    \begin{questions}
        \question What is 2+2?
        
        \begin{oneparchoices}   
        
        \choice \makebox[.2\textwidth][l]{1}
        \CorrectChoice \makebox[.2\textwidth][l]{4}
        \choice \makebox[.2\textwidth][l]{2}
        \choice \makebox[.2\textwidth][l]{3}               
    \end{oneparchoices} 
    \question What is 2+2?
            
    \begin{oneparchoices}   
        
        \choice \makebox[.2\textwidth][l]{1}
        \CorrectChoice \makebox[.2\textwidth][l]{4}
        \choice \makebox[.2\textwidth][l]{2}
        \choice \makebox[.2\textwidth][l]{3}               
    \end{oneparchoices} 
        
        \question What is the result of $y = x^3 - 3x^2 + 7x - 1$?
        
\begin{oneparchoices}   
    
    \choice \makebox[.4\textwidth][l]{some thing}
    \CorrectChoice \makebox[.4\textwidth][l]{$a^2 + b^2 = c^2$}
    \choice \makebox[.4\textwidth][l]{$a^2 + b^2 = c^2$}
    \choice \makebox[.4\textwidth][l]{$a^2 + b^2 = c^2$}               
\end{oneparchoices} 
        
    

\question What is 2+2?

\begin{choices} 
    \choice Very long text Very long text Very long text 
    \CorrectChoice Very long text Very long text Very long text 
    \choice Very long text Very long text Very long text 
    \choice Very long text Very long text Very long text           
\end{choices}  

        
    \end{questions}
    
    \subsection{Keys}
    \centering
    \printkeytable
\end{document}

在这种情况下,键 A、B、C、D 排在两列中,例如问题 3,我想将键 B(某些东西)和键 D(a^2 + b^2 = c^2)对齐,以便与两个问题 1 和 2 的键 C 在同一行。我该怎么做?

在此处输入图片描述

答案1

请注意,这oneparchoices是一个段落。它只是看起来像一个表格,因为所有条目的宽度都相同。首先,您需要将其设置\correctchoicelabel为与相同的宽度choicelabel。当设置两列时,宽度包括缺少的列标签和列之间添加的任何间隙。反复试验是您最好的选择。行末的空格似乎会导致随机变化。

几何与考试类别不兼容,考试类别处理其自己的边距(参见\extrawidth第 26 页)。

\documentclass[12pt,a4paper,answers]{exam}
\usepackage{amsmath}
\usepackage[randomize,overload]{exam-randomizechoices}
\usepackage{tikz}
\usepackage{showframe}

\newlength{\choicewidth}

\newcommand*\circled[1]{\tikz[baseline=(char.base)]{%
        \node[shape=circle, draw, minimum size=1.5em, inner sep=0pt , thick] (char) {#1};}}
\renewcommand\choicelabel{\circled{\Alph{choice}}}
\settowidth{\choicewidth}{\choicelabel}
\renewcommand{\questionshook}{\settowidth{\leftmargin}{0pt}}
\renewcommand{\choiceshook}{\setlength{\labelwidth}{\choicewidth}
  \setlength{\leftmargin}{\dimexpr \labelwidth+\labelsep}}
\newcommand{\correctchoicelabel}{\makebox[\choicewidth]{\fbox{\thechoice}}}
\CorrectChoiceEmphasis{\renewcommand{\choicelabel}{\correctchoicelabel}}
%\usepackage[left=1.7cm,right=1.7cm,top=1.5cm,bottom=2cm]{geometry}

\begin{document}
    \section{Questions}
    \begin{questions}
        \question What is 2+2?
        
    \begin{oneparchoices}
        \choice \makebox[.2\linewidth][l]{1}%
        \CorrectChoice \makebox[.2\linewidth][l]{4}%
        \choice \makebox[.2\linewidth][l]{r}%
        \choice \makebox[.2\linewidth][l]{r}%
    \end{oneparchoices}
    
    \question What is 2+2?
            
    \begin{oneparchoices}
        \choice \makebox[.2\linewidth][l]{1}%
        \CorrectChoice \makebox[.2\linewidth][l]{4}%
        \choice \makebox[.2\linewidth][l]{2}%
        \choice \makebox[.2\linewidth][l]{3}%
    \end{oneparchoices} 
        
        \question What is the result of $y = x^3 - 3x^2 + 7x - 1$?
        
\begin{oneparchoices}
    \choice \makebox[.485\linewidth][l]{some thing}%
    \CorrectChoice \makebox[.485\linewidth][l]{$a^2 + b^2 = c^2$}%
    \choice \makebox[.485\linewidth][l]{$a^2 + b^2 = c^2$}%
    \choice \makebox[.485\linewidth][l]{$a^2 + b^2 = c^2$}%
\end{oneparchoices} 

\question What is 2+2?

\begin{choices} 
    \choice Very long text Very long text Very long text 
    \CorrectChoice Very long text Very long text Very long text 
    \choice Very long text Very long text Very long text 
    \choice Very long text Very long text Very long text           
\end{choices}  
\end{questions}
    
    \subsection{Keys}
    \centering
    \printkeytable
\end{document}

相关内容