自动按分页符比例控制排版

自动按分页符比例控制排版

问答

通过列表定义选择题和选项,但由于自动换页,布局比较丑陋。

目的

我想通过断页处的题目分配比例来自动修正选择题及其选项,下面是想自动修复题目的效果MWE

  1. (1) 题的布局是可以接受的。
  2. (2)题排版不可接受,孤行应该在3页的底部。(通过变量解决\baselineskip
\baselineskip=1\baselineskip plus 0pt minus 5pt \relax
  1. (3) 问题的布局不可接受。选择题主体应位于 6 页的顶部。(未解决)
  2. (4) 问题的布局不可接受。选择题主体应位于 8 页的顶部。(未解决)

主意

将问题主体和问题选项放入小页面,关闭 minipage 的自动分页,并为小页面通过项目数来改变页面。不知道这个想法是否可行,如果不行,还有其他解决方案吗?

平均能量损失

\documentclass{book}
\usepackage{enumitem}
\textheight10.5\baselineskip
\usepackage{lipsum}

\newlist{ExampleQuestionEnumerate}{enumerate}{1}
\setlist[ExampleQuestionEnumerate, 1]{
    fullwidth,
    labelindent=0pt,
    label=(\arabic*),
    labelwidth=!,
    labelsep = 0pt,
    leftmargin=!,
    topsep=0pt plus 2pt,
    partopsep=0pt plus 1pt,
    parsep=0pt,
    itemsep=2pt plus 1pt minus 1pt,
    resume
}
\NewDocumentCommand{\choiceQuestionBody}{ +m } {
        \item #1
}

\newlist{PerLineOptions}{enumerate}{1}
\setlist[PerLineOptions, 1]{
    label=\Alph*.,
    labelsep=0.5em,
    leftmargin=*,
    align=left,
    widest=D,
    nosep
}

\NewDocumentCommand{\fourOptionsInFourLines}{+m +m +m +m}{
    \begingroup
        \begin{PerLineOptions}
            \item #1
            \item #2
            \item #3
            \item #4
        \end{PerLineOptions}
    \endgroup
}

\begin{document}
    \begin{ExampleQuestionEnumerate}[start=1]
        \choiceQuestionBody{\lipsum[2]\lipsum[1][1]}
        \fourOptionsInFourLines 
        {option a}
        {option b}
        {option c}
        {option d}
    \end{ExampleQuestionEnumerate}
    \newpage
    
    \begin{ExampleQuestionEnumerate}[start=2]
        \choiceQuestionBody{\lipsum[2]}
        \fourOptionsInFourLines 
        {option a}
        {option b}
        {option c}
        {option d}
    \end{ExampleQuestionEnumerate}
    \newpage
    
    \begin{ExampleQuestionEnumerate}[start=3]
        \choiceQuestionBody{\lipsum[2]\lipsum[1][1-4]}
        \fourOptionsInFourLines 
        {option a}
        {option b}
        {option c}
        {option d}
    \end{ExampleQuestionEnumerate}

    \newpage
    \begin{ExampleQuestionEnumerate}[start=4]
        \choiceQuestionBody{\lipsum[2]\lipsum[1][1-2]}
        \fourOptionsInFourLines 
        {option a}
        {option b}
        {option c}
        {option d}
    \end{ExampleQuestionEnumerate}
\end{document}

相关内容