使用 Tikz 和考试类时带圆圈的数字间距错误

使用 Tikz 和考试类时带圆圈的数字间距错误
  1. 我正在使用 XeLaTex。
  2. 我也在用这个包exam
  3. 我正在准备多项选择题考试,但我没有 Scantron,我希望学生勾选所需的圈出用笔作答。
  4. 这是我序言的相关部分,其中我设置了命令\circled{}来获取所需的答案格式:

    \usepackage{tikz}
    \newcommand*\circled[1]{\tikz[baseline=(char.base)]{%
        \node[shape=circle,draw,inner sep=1pt] (char) {#1};}}
    \renewcommand\choicelabel{\circled{\thechoice}}
    \renewcommand\thechoice{\arabic{choice}}%
    
  5. 这是典型的多项选择题结构

    \question Choose among the following
    \begin{oneparchoices}
    \choice wrong answer;
    \choice sounds-good-but-it-is-not answer;
    \choice right answer.
    \end{oneparchoices}
    
  6. PDF 输出为 在此处输入图片描述

  7. 我不喜欢带圆圈的数字前面的空格。到目前为止,我还没有找到解决这个问题的简单方法。理想情况下,我希望获得前一个单词和带圆圈的数字之间的正常间距。

答案1

您可以像这样修补 oneparchoices

\usepackage{xpatch}
\xpatchcmd{\oneparchoices}{\penalty -50\hskip 1em plus 1em\relax}
                          {\penalty -50\hskip 0.4em plus 0.25em\relax}  %% change here as you like
                          {}
                          {}

根据需要更改值。

\documentclass{exam}
\usepackage{tikz}
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{%
    \node[shape=circle,draw,inner sep=1pt] (char) {#1};}}
\renewcommand\choicelabel{\circled{\thechoice}}
\renewcommand\thechoice{\arabic{choice}}%
%
\usepackage{xpatch}
\xpatchcmd{\oneparchoices}{\penalty -50\hskip 1em plus 1em\relax}
                          {\penalty -50\hskip 0.4em plus 0.25em\relax}  %% change here as you like
                          {}
                          {}
\begin{document}
  \begin{questions}
    \question Choose among the following
      \begin{oneparchoices}
        \choice wrong answer;
        \choice sounds-good-but-it-is-not answer;
        \choice right answer.

     \end{oneparchoices}
  \end{questions}
\end{document}

在此处输入图片描述

\space

\xpatchcmd{\oneparchoices}{\penalty -50\hskip 1em plus 1em\relax}
                          {\space}  %% change here as you like
                          {}
                          {}

你会得到这个:

在此处输入图片描述

相关内容