为什么删除这个 `>{\stepcounter{tfno}\thetfno.}` 会出现错误

为什么删除这个 `>{\stepcounter{tfno}\thetfno.}` 会出现错误

我按照此链接中的说明进行操作: 删除自动生成的号码? 当它真的阻止了文本的自动编号时,我非常满意。但是为什么当我将文档类更改为时,\documentclass{exam}它突然出现错误。我有以下代码:

\documentclass{exam}
\usepackage{amssymb,graphicx}
\usepackage{array} 
\usepackage{longtable}
\newcounter{tfno}
\renewcommand\arraystretch{2}
\newcommand{\mybox}{\resizebox{.5cm}{!}{\raisebox{-.5ex}{$\Box$}}}

\newenvironment{truefalse}{%
\setcounter{tfno}{0}
\setlength\LTleft{0pt}
\setlength\LTright{0pt}
 \begin{longtable}{cp{.5\textwidth}@{\extracolsep{\fill}}cc}
\multicolumn{1}{r}{}&  & \fbox{\parbox{.75cm}{True}} & \fbox{\parbox{.75cm}     
{False}}  \\
}{%
\end{longtable}
}
\newcommand\tfquestion[1]{ & #1 & \mybox  & \mybox  \\}
\begin{document}
\begin{questions}
\begin{truefalse}
\question\tfquestion{This is a sample text.}
 \question\tfquestion{This is another sample short text.}
  \question\tfquestion{This is a long line containing text and wrapping into  
second line without hitting the boxes}
\end{truefalse} 
\end{questions}
\end{document}

我该如何修复这个错误?

答案1

questions该类的环境是exam一个列表环境,而您尝试将一个放入longtable其中,难怪会遇到问题。

我点击了您另外两个问题的链接,您应该从一开始就提到您打算使用该类exam。这样可以避免人们花时间提供最终与此要求不相符的解决方案。

我建议你阅读课程手册exam,因为它提供了一些自定义问题格式的可能性(我不熟悉,但我看到有一个名为的宏\qformat)。与此同时,以下内容提供了类似于你似乎试图实现的内容:

\documentclass{exam}
\usepackage{amssymb,graphicx}

\newcommand{\mybox}{\resizebox{.5cm}{!}{\raisebox{-.5ex}{$\Box$}}}
\newcommand\tfquestion[1]{%
  \parbox[t]{.5\textwidth}{#1}\hfill\mybox\quad\mybox}

\begin{document}

\begin{questions}
  \question\tfquestion{This is a sample text.}
  \question\tfquestion{This is another sample short text.}
  \question\tfquestion{This is a long line containing text and wrapping into  
second line without hitting the boxes}
\end{questions}

\end{document}

问题

True-False根据 OP 的要求,我可以提出以下建议。这有点复杂,因为我想绝对确保在框之后和实际问题之前不会发生分页。

但是:我甚至不确定questions该类的环境exam是否应该多次使用;事实上,这样做会产生multiply-defined labels错误,我在一个普通的示例中尝试过,只使用exam类,没有使用这里的代码,只是重复的questions环境。如果只应该使用一次这个环境(手册很长,我没有时间阅读它),那么在错误的地方使分页符不可能的工作可能只是有点浪费。

环境被调用truefalsequestions,每个项目将被输入为\tfquestion{the text of the question within braces like this}。有一个可选参数,默认为.9,表示有多少可用空间将用作多行问题的宽度。

\documentclass{exam}
\usepackage{amssymb,graphicx}

% \newcommand\tfquestion[1]{%
%   \parbox[t]{.5\textwidth}{#1}\hfill\mybox\quad\mybox}

\newsavebox{\TrueBox}
\sbox{\TrueBox}{\fboxrule1pt\fbox{True}}

\newsavebox{\FalseBox}
\sbox{\FalseBox}{\fboxrule1pt\fbox{False}}

\newcommand{\mybox}{\resizebox{.5cm}{!}{\raisebox{-.5ex}{$\Box$}}}

\newsavebox{\TwoBoxes}
\sbox{\TwoBoxes}{\makebox[\wd\TrueBox] {\mybox}\quad
                 \makebox[\wd\FalseBox]{\mybox}}

\newcommand\tfquestion[1]{} % will be overwritten

\makeatletter
\newenvironment{truefalsequestions}[1][.9] % defaults to 90% of available space
  {\renewcommand\tfquestion[1]{%
      \question
      \parbox[t]{#1\dimexpr\textwidth-\leftmargin-\wd\TwoBoxes\relax}{##1}%
        \hfill\usebox{\TwoBoxes}}%
   \par\bigskip
   \hb@xt@\linewidth{\hss\usebox{\TrueBox}\quad\usebox{\FalseBox}}%
   \nointerlineskip
   \kern\medskipamount\nopagebreak
   \@nobreaktrue
   \begin{questions}}
  {\end{questions}}
\makeatother


\begin{document}

\begin{truefalsequestions}
  \tfquestion{This is a sample text.}

  \tfquestion{This is another sample short text.}

  \tfquestion{This is a long line containing text and wrapping into  
second line without hitting the boxes. This is a long line containing text and
wrapping into second line without hitting the boxes.}

  \tfquestion{This is a sample text.}
\end{truefalsequestions}


\begin{truefalsequestions}[.6]
  \tfquestion{This is a sample text.}

  \tfquestion{This is another sample short text.}

  \tfquestion{This is a long line containing text and wrapping into  
second line without hitting the boxes. This is a long line containing text and
wrapping into second line without hitting the boxes.}

  \tfquestion{This is a sample text.}
\end{truefalsequestions}

\end{document}

精致的问题环境

相关内容