我想要创建一个类似于下图的数学练习册。我已包含一些我尝试运行的代码 - 标记为 MWE。
我的问题是我想继续一个我已经开始的列表 - 一个名为的列表:ptestlist
。我遇到的问题是,我试图使用tabularx
来形成 A 列和 B 列,以及答案选项。我计划在resume=ptest
每个后续表格中恢复列表。编号必须是自动的,这样问题编号的任何增加或减少都会重新计算。
我原本的想法是简单地将我的输入ptestlist
到一个multirow
单元格中并像往常一样继续表格,但我收到了一个错误。
MWE:(或者至少是我的尝试)
\documentclass[letterpaper,twoside,openright]{memoir}
\usepackage{enumitem}
\newlist{ptestlist}{enumerate}{2}
\setlist[ptestlist]{label={\arabic*.},itemsep=5mm,labelsep=3mm,topsep=1cm}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{tabularx}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\begin{document}
\begin{center}
{\LARGE Part Two --- Quantitative Reasoning}
\end{center}
\textbf{Directions:} Choose the best answer from the four choices given.
\hrulefill
%----------- Questions --------------%
\begin{multicols}{2}
\begin{tabularx}{\columnwidth}{YXX}
\multirow{2}{c}{
\begin{ptestlist}[series=ptest]
\item ?
\end{ptestlist} }
&
\underline{Column A}
&
\underline{Column B}
\\
&
$ 5 + 2 \times ( 4 + 3 )$
&
$19$
\\
\end{tabularx}
\end{multicols}
\end{document}
[更新]
好的。所以我认为我已经回答了自己的问题,但又遇到了另一个问题。不过,这可能需要一个新的问题帖子 - 我在这里问过:从表格底部锚定表格(Tabularx)
首先,我发现的解决方案相当简单。我只是没有这样想过。见下文。但我的新问题是将问题编号与“A 列”和“B 列”下的答案选项对齐(如上图所示)。问题编号专门与答案选项对齐,而不是与我的 MWE 中的形状对齐。
MWE(解决方案):
\documentclass[letterpaper,twoside,openright]{memoir}
\usepackage[bmargin=1in]{geometry}
\setlength{\parindent}{0pt}
\usepackage{enumitem}
\newlist{ptestlist}{enumerate}{2}
\setlist[ptestlist]{label={\arabic*.},itemsep=5mm,labelsep=3mm,topsep=1cm}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{tabularx}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{tikz}
\begin{document}
\begin{center}
{\LARGE Part One --- Word Problems}
\end{center}
\textbf{Directions:} Choose the best answer from the four choices given.
\hrulefill
%----------- Questions --------------%
\setlength{\columnsep}{50pt}
\begin{multicols}{2}
\begin{ptestlist}[series=ptest,labelsep=0pt]
\item \begin{tabularx}{3in}{YY}
\underline{Column A}
&
\underline{Column B}
\\
$6 + 4 - 5 \times 6$
&
34
\\
\end{tabularx}
\item \begin{tabularx}{3in}{YY}
\multicolumn{2}{c}
{
\begin{tikzpicture}
\draw (-1.85,0) node [rectangle,draw,minimum size=1in,
label=below:$2x$,label=right:$x$] (rsquare) {};
\draw (1.75,0) node [rectangle,draw,minimum size=.8in,
label=below:$2y$,label=right:$y$] (lsquare) {};
\end{tikzpicture}
} \\
\underline{Column A}
&
\underline{Column B}
\\
34
&
34
\\
\end{tabularx}
\item \begin{tabularx}{3in}{YY}
\underline{Column A}
&
\underline{Column B}
\\
34
&
34
\\
\end{tabularx}
\item \begin{tabularx}{3in}{YY}
\underline{Column A}
&
\underline{Column B}
\\
34
&
34
\\
\end{tabularx}
\end{ptestlist}
\end{multicols}
\end{document}
答案1
修改 3:原帖者希望获得一个运行计数器,让其他用户能够输入其他问题,而不会扰乱整个代码框架。这可能吗?
是的,这是可能的。此新解决方案将通过将计数器保存为tmpc
然后将其恢复为来自动进行编号ptestlisti
,如下所示
\newcounter{tmpc} % defined in the preamble
\begin{ptestlist}[series=ptest]
\setcounter{ptestlisti}{\thetmpc} % -- restore to
\item ...
\item ...
\end{ptestlist}
\setcounter{tmpc}{\theptestlisti} % -- save to tmpc
输出如下
代码
\documentclass[letterpaper,twoside,openright]{memoir}
\usepackage[paper size={25cm,25cm}]{geometry}
\usepackage{enumitem,tikz,lipsum}
\newlist{ptestlist}{enumerate}{2}
\setlist[ptestlist]{label={\arabic*.},itemsep=5mm,labelsep=3mm,
topsep=0cm,parsep=-0.5cm}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{tabularx}
\renewcommand\tabularxcolumn[1]{m{#1}}
\newcolumntype{Y}{>{\raggedright\arraybackslash}m{0.1\columnwidth}}
\setlength{\columnsep}{20pt}
\setlength{\columnseprule}{1pt}
\newcommand{\extraspace}{
\vspace{10pt}
\rule{0.8\columnwidth}{1pt}
\vspace{10pt}
}
\newcounter{tmpc}
\begin{document}
\begin{center}
{\LARGE Part Two --- Quantitative Reasoning}
\end{center}
\textbf{Directions:} Choose the best answer from the four choices given.
\hrulefill
%----------- Questions --------------%
\begin{multicols}{2}
\begin{center}
\begin{tikzpicture}
\draw[] (0,0) ellipse (2 and 1);
\end{tikzpicture}
\end{center}
\begin{tabularx}{\columnwidth}{YXX}
\multirow{2}{1cm}{
\begin{ptestlist}[series=ptest]
\item
\end{ptestlist}
\setcounter{tmpc}{\theptestlisti}
}
&\underline{Column A}& \underline{Column B} \\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
\end{tabularx}
\extraspace
\begin{center}
\begin{tikzpicture}
\draw[] (0,0) rectangle (2,2);
\end{tikzpicture}
\end{center}
\begin{tabularx}{\columnwidth}{YXX}
\multirow{2}{1cm}{
\begin{ptestlist}[series=ptest]
\setcounter{ptestlisti}{\thetmpc}
\item
\item
\end{ptestlist}
\setcounter{tmpc}{\theptestlisti}
}
&\underline{Column A}& \underline{Column B} \\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
\end{tabularx}
\extraspace
\begin{tabularx}{\columnwidth}{YXX}
\multirow{2}{1cm}{
\begin{ptestlist}[series=ptest]
\setcounter{ptestlisti}{\thetmpc}
\item
\item
\end{ptestlist}
\setcounter{tmpc}{\theptestlisti}
}
&\underline{Column A}& \underline{Column B} \\
& new insert \\
& new insert
\end{tabularx}
\extraspace
\begin{center}
\begin{tikzpicture}
\draw[] (0,0) grid (2,2);
\end{tikzpicture}
\end{center}
\vspace{10pt}
\begin{tabularx}{\columnwidth}{YXX}
\multirow{2}{1cm}{
\begin{ptestlist}
\setcounter{ptestlisti}{\thetmpc}
\item
\item
\item
\end{ptestlist}
\setcounter{tmpc}{\theptestlisti}
}
&\underline{Column A}& \underline{Column B} \\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
\end{tabularx}
\extraspace
\begin{tabularx}{\columnwidth}{YXX}
\multirow{2}{1cm}{
\begin{ptestlist}
\setcounter{ptestlisti}{\thetmpc}
\item
\item
\end{ptestlist}
\setcounter{tmpc}{\theptestlisti}
}
&\underline{Column A}& \underline{Column B} \\
& follow up\\
& follow up\\
\end{tabularx}
\extraspace
\lipsum[1-2]
\end{multicols}
\end{document}
错误是由于c
说明符造成的。应该给出长度,因为其内容是环境。
\multirow{2}{c}{contents}
编辑:正如下面 karlkoeller 的评论中提到的,如果在里面添加另一个tabularx
带有 resumed 的ptestlist
,编号就会出错。但是,再次阅读手册后,可以使用下面的命令解决编号问题,因为会生成与本例中调用的enumitem
计数器对应的并行计数器。enumi
ptestlisti
\setcounter{ptestlisti}{3} % will continue counting with 4
修改 2:使解决方案接近 OP 所发布的内容。宏extraspace
是在问题/表格环境之间添加水平线和填充空间。
代码
\documentclass[letterpaper,twoside,openright]{memoir}
\usepackage{enumitem,tikz,lipsum}
\newlist{ptestlist}{enumerate}{2}
\setlist[ptestlist]{label={\arabic*.},itemsep=5mm,labelsep=3mm,
topsep=0cm,parsep=-0.5cm}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{tabularx}
\renewcommand\tabularxcolumn[1]{m{#1}}
\newcolumntype{Y}{>{\raggedright\arraybackslash}m{0.1\columnwidth}}
\setlength{\columnsep}{20pt}
\setlength{\columnseprule}{1pt}
\newcommand{\extraspace}{
\vspace{10pt}
\rule{0.8\columnwidth}{1pt}
\vspace{10pt}
}
\begin{document}
\begin{center}
{\LARGE Part Two --- Quantitative Reasoning}
\end{center}
\textbf{Directions:} Choose the best answer from the four choices given.
\hrulefill
%----------- Questions --------------%
\begin{multicols}{2}
\extraspace
\begin{center}
\begin{tikzpicture}
\draw[] (0,0) ellipse (2 and 1);
\end{tikzpicture}
\end{center}
\begin{tabularx}{\columnwidth}{YXX}
\multirow{2}{1cm}{
\begin{ptestlist}[series=ptest]
\item
\item
\item
\end{ptestlist}
}
&\underline{Column A}& \underline{Column B} \\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
\end{tabularx}
\extraspace
\begin{center}
\begin{tikzpicture}
\draw[] (0,0) rectangle (2,2);
\end{tikzpicture}
\end{center}
\begin{tabularx}{\columnwidth}{YXX}
\multirow{2}{1cm}{
\begin{ptestlist}[series=ptest]
\setcounter{ptestlisti}{3}
\item
\item
\item
\end{ptestlist}
}
&\underline{Column A}& \underline{Column B} \\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
\end{tabularx}
\extraspace
\begin{center}
\begin{tikzpicture}
\draw[] (0,0) grid (2,2);
\end{tikzpicture}
\end{center}
\vspace{10pt}
\begin{tabularx}{\columnwidth}{YXX}
\multirow{2}{1cm}{
\begin{ptestlist}
\setcounter{ptestlisti}{6}
\item
\item
\item
\end{ptestlist}
}
&\underline{Column A}& \underline{Column B} \\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
& $ 5 + 2 \times ( 4 + 3 )$& $19$\\
\end{tabularx}
\extraspace
\lipsum[1-2]
\end{multicols}
\end{document}