![自动枚举两列和长表](https://linux22.com/image/265977/%E8%87%AA%E5%8A%A8%E6%9E%9A%E4%B8%BE%E4%B8%A4%E5%88%97%E5%92%8C%E9%95%BF%E8%A1%A8.png)
我正在创建一个包含多个页面的测试。下面的示例说明了其结构。
\documentclass[a4paper,9pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath, amsfonts, amssymb}
\renewcommand{\rmdefault}{ptm}
\usepackage{longtable}
\usepackage[left=0.5cm, right=0.5cm, top=0.5cm, bottom=0.5cm]{geometry}
% For answer key
\usepackage{color}
\newcommand{\B}[1]{ \noindent{\setlength{\fboxsep}{1pt}\colorbox{black}{\color{white}\textbf{#1}}}}
\begin{document}
\begin{center}
\textbf{Test}\\
\end{center}
Names ………………………………………… id …………………………
\begin{longtable}{p{19cm}|p{1cm}}
\textbf{1.} Question about & \textbf{1.} \\
a) Answer 1 & a) \\
b) Answer 2 & b) \\
c) Answer 3 & c) \\
d) Answer 4 & d) \\
\textbf{2.} Question is & \textbf{2.} \\
a) Answer 1 & a) \\
b) Answer 2 & b) \\
c) Answer 3 & c) \\
d) Answer 4 & d) \\
\textbf{3.} Question be & \textbf{3.} \\
a) Calculate 1 & $\ldots$ \\
b) Calculate 2 & $\ldots$ \\
c) Calculate 3 & $\ldots$ \\
d) Calculate 4 & $\ldots$ \\
\end{longtable}
\end{document}
是否可以自动枚举问题而不是书写例如\textbf{1.}
?有时我需要删除一个问题,我必须手动调整数字。同样的问题涉及右栏中的答案。
我的第二个问题可能有点难。我创建了一个与测试几乎相同的答案。例如,对于 Q1 和 Q3,我们有(\B
在序言中定义)
\textbf{1.} Question about & \textbf{1.} \\
a) Answer 1 & \B{a)} \\
b) Answer 2 & b) \\
c) Answer 3 & c) \\
d) Answer 4 & d) \\
\textbf{3.} Question be & \textbf{3.} \\
a) Calculate 1 & \B{1.2} \\
b) Calculate 2 & \B{2.2} \\
c) Calculate 3 & \B{3.2} \\
d) Calculate 4 & \B{1} \
我只想创建模板键,但可以切换到测试:\B{a)} --> a)
如果\B{1.2} --> $\ldots$
我在序言中更改了某些内容。
我将非常感激您的任何建议。
答案1
您可以按如下方式创建一个计数器和一个辅助宏:
\newcounter{step}
\newcommand\inc{\stepcounter{step}\textbf{\thestep. }}
您可以用作:
\inc Question about & \thestep \\
\IfDecimal
对于第二部分,您可以使用条件(例如来自包的条件)在十进制数的答案和字母结果的答案之间定义一个命令xstring
。
\newcommand{\B}[1]{%
\IfDecimal{#1}{$\ldots$}{\fbox{#1}}
}
我曾经\fbox
使命令更具可读性,但您可以用 colorbox 和其余格式命令替换它。
希望这能让你更接近你想要的东西。只是一个小小的一般性评论,我认为 9pt 字体对于考试来说太小了。
答案2
我不明白为什么每个答案都有两列。但是,此代码对我有用
\begin{longtable}{p{19cm}|p{19cm}}
\begin{enumerate}
\item Question about
\begin{enumerate}
\item Answer 1
\item Answer 2
\item Answer 3
\item Answer 4
\end{enumerate}
\item Question about
\begin{enumerate}
\item Answer 1
\item Answer 2
\item Answer 3
\item Answer 4
\end{enumerate}
\end{enumerate}
\end{longtable}
这是输出
希望它有效。
答案3
感谢 Yiannis 和 Sigur,我找到了解决方案。有人可能会觉得它很有用。我知道使用条件会更优雅,但我做不到。
% Put comments here if one needs to see a test
%\newcommand{\B}[1]{ \noindent{\setlength{\fboxsep}{1pt}\colorbox{black}{\color{white}\textbf{#1}}}}
%\newcommand{\BB}[1]{ \noindent{\setlength{\fboxsep}{1pt}\colorbox{black}{\color{white}\textbf{#1}}}}
% Put comments here if one needs to see answers
\newcommand{\B}[1]{#1}
\newcommand{\BB}[1]{$\ldots$} % crucial is [1]; thanks Qrrbrbirlbel
% Automatically enumerates questions & answers
\newcounter{step}
\newcommand\pyt[1]{\stepcounter{step}\textbf{\thestep. }#1&\textbf{\thestep.}}
\B
它对于 a)、b)、c) 和\BB
值来说就足够使用了。