我按照此链接中的说明进行操作:
删除自动生成的号码?
当它真的阻止了文本的自动编号时,我非常满意。但是为什么当我将文档类更改为时,\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}