如果当前列中剩余的行数太少而无法完成环境,则跳至下一列

如果当前列中剩余的行数太少而无法完成环境,则跳至下一列

我在用着

\documentclass[addpoints,answers,12pt]{exam} 
\usepackage{multicol} 

生成两列的多项选择题试卷。

如果给定列中剩余的行少于三行,我想在下一列开始新问题吗?

您能否建议我如何实现同样的目标?

使用的示例代码如下:

    \documentclass[addpoints,answers,12pt]{exam}
    \usepackage{multicol}
    \usepackage[T1]{fontenc}
    \usepackage{graphicx}
    \usepackage{nonfloat}
    \usepackage{caption}
    \usepackage{amsmath,amssymb}
    \usepackage{lmodern}
    \usepackage{textcomp}
    \usepackage{ifpdf}
    \begin{document}
    \begin{multicols}{2}
    \begin{questions}
\question If $\displaystyle y = {\sin ^{ - 1}}\left( {\frac{{2\,\,\tan \,\,x}}{{1 - \,\,{{\tan }^2}\,\,x}}} \right), $  then $\displaystyle \frac{{dy}}{{dx}} =  $
\begin{choices} \choice $\displaystyle \frac{{2\,\,{{\sec }^2}\,\,2x}}{{\sqrt {1 - \,\,{{\tan }^2}\,\,2x} }} $
\choice 2
\choice $\displaystyle \frac{{{{\sec }^2}\,\,2x}}{{\sqrt {1 - \,\,{{\tan }^2}\,\,x} }} $
\choice 1
 \end{choices}
\question If $\displaystyle x{e^y} = {y^2} $  then $\displaystyle \frac{{dy}}{{dx}} =  $
\begin{choices} \choice $\displaystyle \frac{{ - y}}{{x\,\,\left( {2 - y} \right)}} $
\choice $\displaystyle \frac{y}{{x\,\,\left( {2 - y} \right)}} $
\choice $\displaystyle \frac{x}{{y\,\,\,\left( {2 - x} \right)}} $
\choice $\displaystyle \frac{{ - x}}{{y\,\,\,\left( {2 - y} \right)}} $
 \end{choices}
\question If $\displaystyle y = {\log _{10}}\left( {\log \,\,x} \right), $  then $\displaystyle \frac{{dy}}{{dx}} =  $
\begin{choices} \choice $\displaystyle \frac{1}{{x\,\,\log \,\,x\,\,\log \,\,\,10}} $
\choice $\displaystyle \frac{{\log \,\,x}}{{x\,\,\log \,\,10}} $
\choice $\displaystyle \frac{{ - 1}}{{x\,\,\log x\,\log \,\,10}} $
\choice $\displaystyle  - \frac{{\log \,\,x}}{{x\,\,\log \,\,10}} $
 \end{choices}
\question If $\displaystyle x{y^2} = 1, $  then $\displaystyle \frac{{dy}}{{dx}} =  $
\begin{choices} \choice $\displaystyle \frac{{{y^2}}}{2} $
\choice $\displaystyle \frac{{ - y}}{{2x}} $
\choice $\displaystyle 2{y^2} $
\choice $\displaystyle  - 2{y^2} $
 \end{choices}
\question If $\displaystyle x + {\tan ^{ - 1}}x = y + {\tan ^{ - 1}}\,\,y, $  then $\displaystyle \frac{{dy}}{{dx}} =  $
\begin{choices} \choice $\displaystyle \frac{{{y^2}\left( {{x^2} + 2} \right)}}{{{x^2}\left( {{y^2} + 2} \right)}} $
\choice $\displaystyle \frac{{{x^2} + 2}}{{{y^2} + 2}} $
\choice $\displaystyle \frac{{\left( {{x^2} + 2} \right)\left( {{y^2} + 1} \right)}}{{\left( {{x^2} + 1} \right)\left( {{y^2} + 2} \right)}} $
\choice $\displaystyle \frac{{{y^2} + 2}}{{{x^2} + 2}} $
 \end{choices}
\question If $\displaystyle y = \log \,\left( {\sin \,\,x} \right) + \sin \,\,\left( {\log \,\,x} \right), $  then $\displaystyle \frac{{dy}}{{dx}} =  $
\begin{choices} \choice $\displaystyle \cot x + \frac{{\cos \left( {\log \,\,x} \right)}}{x} $
\choice $\displaystyle \frac{1}{{\sin \,\,x}} + \sin \left( {\frac{1}{x}} \right) $
\choice $\displaystyle \cot x - \frac{{\cos \left( {\log \,\,x} \right)}}{x} $
\choice $\displaystyle \cot x - x\,\,\left( {\log \,\,x} \right) $
 \end{choices}
\question If $\displaystyle x = t + \frac{1}{t},y = t - \frac{1}{t} $  Then $\displaystyle \frac{{{d^2}y}}{{d{x^2}}} $  at $\displaystyle t = 2 $  is
\begin{choices} \choice $\displaystyle  - \frac{{32}}{{27}} $
\choice $\displaystyle \frac{{32}}{{27}} $
\choice $\displaystyle \frac{{16}}{{27}} $
\choice $\displaystyle \frac{8}{{27}} $
 \end{choices}
\question If  $\displaystyle y = x + \frac{{\,\,\,\,\,1}}{{x + \frac{1}{{x + \frac{{\,\,\,\,\,\,\,\,\,\,\,\,\,\,1}}{{x + .....\,\,\,\,\,\,\,\,\,\,\,\infty \,\,\,\,\,\,\,}}\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,}}}}, $  Then $\displaystyle \frac{{dy}}{{dx}} =  $
\begin{choices} \choice $\displaystyle \frac{y}{{2y - x}} $
\choice $\displaystyle \frac{{ - y}}{{2y - x}} $
\choice $\displaystyle \frac{x}{{2y - x}} $
\choice $\displaystyle \frac{{ - x}}{{2y - x}} $
 \end{choices}
\question If  $\displaystyle {x^m}\,\,{y^n} = {\left( {x + y} \right)^{m + n}} $  Then $\displaystyle \frac{{dy}}{{dx}} =  $
\begin{choices} \choice $\displaystyle \frac{x}{y} $
\choice $\displaystyle \frac{y}{x} $
\choice $\displaystyle  - \frac{y}{x} $
\choice $\displaystyle  - \frac{x}{y} $
 \end{choices}
\question If $\displaystyle y = \log \left[ {{a^x}\,\,{{\sin }^3}\,x\,\cos \,\,x} \right], $  Then $\displaystyle \frac{{dy}}{{dx}} =  $
\begin{choices} \choice $\displaystyle 1 + 3\,\cot x - \tan \,\,x $
\choice $\displaystyle \log \,\,a + 3\,\cot x - \tan \,\,x $
\choice $\displaystyle \log \,\,a - 3\,\cot x - \tan \,\,x $
\choice $\displaystyle \log \,\,a + 3\,\cot x - \cot \,\,x $
 \end{choices}
\question If $\displaystyle y = {e^{\log \,\left( {\log \,\,x} \right)}}, $  Then $\displaystyle \frac{{dy}}{{dx}} =  $
\begin{choices} \choice $\displaystyle \frac{1}{{x\,\,\log \,\,a}} $
\choice 1
\choice $\displaystyle \frac{1}{x} $
\choice $\displaystyle \frac{{\log \,\,a}}{x} $
 \end{choices}
\question If $\displaystyle y = {\tan ^{ - 1}}\left( {\frac{{2x}}{{1 + 15{x^2}}}} \right), $  Then $\displaystyle \frac{{dy}}{{dx}} =  $
\begin{choices} \choice $\displaystyle \frac{5}{{1 + 25{x^2}}} - \frac{3}{{1 + 9{x^2}}} $
\choice $\displaystyle \frac{1}{{1 + 25{x^2}}} - \frac{1}{{1 + 9{x^2}}} $
\choice $\displaystyle \frac{2}{{1 + {{\left( {\sqrt {15} x} \right)}^2}}} $
\choice $\displaystyle \frac{3}{{1 + {{\left( {\sqrt {15} x} \right)}^2}}} $
 \end{choices}
\question If $\displaystyle y = \sin \,\,{\left( {ax + b} \right)^3}, $  Then $\displaystyle \frac{{dy}}{{dx}} =  $
\begin{choices} \choice $\displaystyle {\text{3}}\,{\text{sin}}\,\,{\left( {ax + b} \right)^2} $
\choice $\displaystyle {\text{3}}\,{\text{sin}}\,\,{\left( {ax + b} \right)^2}\,\cos \,{\left( {ax + b} \right)^2} $
\choice $\displaystyle 3a{\left( {ax + b} \right)^2}\,\cos {\left( {ax + b} \right)^3} $
\choice $\displaystyle  - 3\sin {\left( {ax + b} \right)^2}\,\cos \left( {ax + b} \right) $
 \end{choices}
    \end{questions}
    \end{multicols}
    \end{document}

答案1

如果给定列中剩余的行数少于三行,我想在下一列开始新的问题。

据我所知,没有简单的方法可以“破解”(也可以说“修改”)exam文档类的代码,告诉它将由相关可能性\question组生成的行和由相关choice可能性组生成的行放在一起。因此,我认为不可能自动完成防止此类材料跨列(或跨页)拆分的任务。

您提到要使用软件包multicols提供的环境multicol以双列模式排版问题。软件包multicol执行了一些非常巧妙的工作,以在未完全填满的页面上跨列平衡材料。这项工作的缺点——至少从您的角度来看——是诸如\needspace{2cm}(或所需的任何垂直空间量)之类的指令无法正常工作,因为它们的努力将被 的工作所抵消multicol

幸运的是,还有一种替代且相当简单的方法:multicol您可以使用文档类选项,并在需要分栏时twocolumn插入说明,而不是加载包。(在双列模式下,生成一个\newpage\newpage分栏符,而不是分页符。)对于您的设置,事实证明\newpage在问题 5、8 和 12 之前需要说明。

下面的代码还对您的帖子进行了一些额外的编辑。(i)而不是$\displaystyle\frac$,我认为写更容易$\dfrac$。(ii)表达式\dfrac{dy}{dx}出现的频率足以保证创建专用的宏,例如\newcommand{\dyx}{\dfrac{dy}{dx}}。(iii)绝对使用宏\cfrac来排版连分数。(iv)您似乎使用了比必要更多的花括号。例如,我看不出写法有什么优势,比如说,\frac{x}{{2y - x}};\frac{x}{2y - x}我认为阅读和调试更简单。(v)请更慷慨地使用空格,包括在环境结尾choices和下一个指令之间。在输入文件中提供这些额外的空行不会在输出中创建不需要的额外行。(vi)当和能起到同样好的作用(甚至更好)时\question,不要不加区别地使用\left(和。\right)()

\documentclass[addpoints,answers,12pt,twocolumn]{exam}
\usepackage{amsmath}
\newcommand{\dyx}{\dfrac{dy}{dx}} % a frequently-used term...
\begin{document}
\begin{questions}
\question 
If $y = \sin^{-1}\left( \dfrac{2\tan x}{1 - \tan^2 x} \right)$, then $\dyx=$
\begin{choices} 
\choice $\dfrac{2\sec^2 2x}{\sqrt {1 - \tan^2 2x} } $
\choice 2
\choice $\dfrac{ \sec^2 2x}{\sqrt {1 - \tan^2  x} }  $
\choice 1
\end{choices}

\question If $x e^y = y^2$, then $\dyx=$
\begin{choices} 
\choice $\dfrac{-y}{x(2 - y)} $
\choice $\dfrac{ y}{x(2 - y)} $
\choice $\dfrac{ x}{y(2 - x)} $
\choice $\dfrac{-x}{y(2 - y)} $
\end{choices}

\question If $y = \log_{10}(\log x)$, then $\dyx=$
\begin{choices} 
\choice $ \dfrac{     1}{x\log x \log 10} $
\choice $ \dfrac{\log x}{x\log 10} $
\choice $ \dfrac{    -1}{x\log x \log 10} $
\choice $-\dfrac{\log x}{x\log 10} $
\end{choices}

\question If $x y^2 = 1$, then $\dyx=$
\begin{choices} 
\choice $\dfrac{y^2}{2} $
\choice $\dfrac{-y}{2x} $
\choice $ 2 y^2 $
\choice $-2 y^2 $
\end{choices}

\newpage  %% force colunn break
\question If $x + \tan^{-1}x = y + \tan^{-1}y$, then $\dyx=$
\begin{choices} 
\choice $\dfrac{y^2 (x^2 + 2)}{x^2(y^2 + 2)} $
\choice $\dfrac{x^2 + 2}{y^2 + 2} $
\choice $\dfrac{(x^2+2)(y^2+1)}{(x^2+1)(y^2+2)} $
\choice $\dfrac{y^2+2}{x^2+2} $
\end{choices}

\question If $y = \log(\sin x) + \sin(\log x)$, then $\dyx=$
\begin{choices} 
\choice $\cot x + \dfrac{\cos(\log x)}{x} $
\choice $\dfrac{1}{\sin x} + \sin\left( \dfrac{1}{x} \right)$
\choice $\cot x - \dfrac{\cos(\log x)}{x} $
\choice $\cot x - x(\log x) $
\end{choices}

\question If $x = t + \dfrac{1}{t}$, 
$y = t - \dfrac{1}{t} $,  then 
$\dfrac{d^2 y}{d x^2} $  at $t = 2 $  is
\begin{choices} 
\choice $-\dfrac{32}{27} $
\choice $ \dfrac{32}{27} $
\choice $ \dfrac{16}{27} $
\choice $ \dfrac{8}{27} $
\end{choices}

\newpage  %% force column break
\question If  $y = x + 
\cfrac{1}{x + 
\cfrac{1}{x + 
\cfrac{1}{x + \cdots }}}$, then $\dyx=$
\begin{choices} 
\choice $\dfrac{y}{2y - x} $
\choice $\dfrac{ - y}{2y - x} $
\choice $\dfrac{x}{2y - x} $
\choice $\dfrac{ - x}{2y - x} $
\end{choices}

\question If  $x^m y^n = (x + y)^{m + n} $, then $\dyx=$
\begin{choices} 
\choice $\dfrac{x}{y} $
\choice $\dfrac{y}{x} $
\choice $ - \dfrac{y}{x} $
\choice $ - \dfrac{x}{y} $
\end{choices}

\question If $y = \log \left[a^x \sin^3 x \cos x \right]$, then $\dyx=$
\begin{choices} 
\choice $1 + 3\cot x - \tan x $
\choice $\log a + 3\cot x - \tan x $
\choice $\log a - 3\cot x - \tan x $
\choice $\log a + 3\cot x - \cot x $
\end{choices}

\question If $y = e^{\log(\log x)}$, then $\dyx=$
\begin{choices} 
\choice $\dfrac{1}{x\log a} $
\choice 1
\choice $\dfrac{1}{x} $
\choice $\dfrac{\log a}{x} $
\end{choices}

\newpage  %% force a column break
\question If $y = \tan^{-1} \left( \dfrac{2x}{1 + 15 x^2} \right)$, then $\dyx=$
\begin{choices} 
\choice $\dfrac{5}{1 + 25 x^2} - \dfrac{3}{1 + 9 x^2} $
\choice $\dfrac{1}{1 + 25 x^2} - \dfrac{1}{1 + 9 x^2} $
\choice $\dfrac{2}{1 + \left(\sqrt{15}\,x \right)^2} $
\choice $\dfrac{3}{1 + \left(\sqrt{15}\,x \right)^2} $
\end{choices}

\question If $y = \sin(ax + b)^3$, then $\dyx=$
\begin{choices} 
\choice $3\sin(ax + b)^2 $
\choice $3\sin(ax + b)^2 \cos(ax + b)^2$
\choice $3a(ax + b)^2 \cos(ax + b)^3 $
\choice $-3\sin(ax + b)^2 \cos(ax + b)$
\end{choices}

\end{questions}
\end{document}

答案2

有一种“黑客”或者更确切地说是一种可以使用的方法:通过提供一系列垂直空间和惩罚来帮助 TeX 进行选择,这些惩罚有利于在惩罚处打破列:

\newcommand\maybenextcolgeneric[2]{\par\vspace{0pt plus #1\baselineskip}%
                                \penalty #2
                               \vspace{0pt plus -#1\baselineskip}}

这将生成一个可以增长而不会对#1行数造成太大影响的空间,然后遵循#2在这里中断的惩罚,然后遵循另一个撤消先前空间的空间(因此我们垂直回到我们开始的地方)。

因此,如果你应用上述内容,例如像这样

\newcommand\maybenextcol{\maybenextcolgeneric{1}{-500}} 

\maybenextcol然后在前面添加\question一个,这将告诉 TeX,在列底部留一行空格比在问题的第一行之后断开列要好,结果你会得到

在此处输入图片描述

代替

在此处输入图片描述

和以前一样。当然,现在这些柱子会变得不平整,因为它们的底部有时会有空间。

您可能需要对通用宏中的参数进行一些调整,例如,通过增加第一个值来留出更多空间,或者通过更改第二个值来使断点更合适或更不合适(负号表示断点位置合适)。但是,您不应该将空间设置得太大,因为这会建议 TeX 将大部分多余的空间放在该位置,而不是将其分散到列上。

当然,你可以通过以下方式节省一些打字时间

\newcommand\myquestion{\maybenextcol\question}

然后你用这个来代替\questionthoughtout。

相关内容