这exsheets
提供方便的命令来编写考试,并有一个不错的开关来打印答案。它还提供了一个打印代码的环境(使用包exsheets-listings
)。
然而,即使没有打印解决方案,在环境中给出解决方案时两个问题之间的间距lstsolution
也是不一致的。
母:
\documentclass[letterpaper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{exsheets-listings}
%\SetupExSheets{solution/print=true}
\begin{document}
\begin{question}
Write a statement that assign the value $10$ to the variable \texttt{x}.
\end{question}
\begin{lstsolution}
x = 10;
\end{lstsolution}
\begin{question}
Here comes another question.
\end{question}
\begin{solution}
A solution that is not made of code.
\end{solution}
\begin{question}
And a last question to see the spacing.
\end{question}
\end{document}
未打印的lstsolution
位于练习 1 和练习 2 之间,并且这两个练习之间的间距大于练习 2 和练习 3 之间的间距。
这是一项功能吗?有没有什么巧妙的解决方法(只需“手动”填充空格)?
答案1
这不是一个特征,exsheets
而是——以下是在导致该行为listings
的幕后发生的事情:exheets-listings
\documentclass{article}
\usepackage{listings}
\lstnewenvironment{codetest}{}{}
\begin{document}
some text
some text
\begin{codetest}
\end{codetest}
some text
\end{document}
aboveskip
垂直空间是列表和参数的组合belowskip
。如果不打印解决方案,可以将两个参数都设置为零:
\AtBeginEnvironment{lstsolution}
{\PrintSolutionsF{\lstset{aboveskip=0pt,belowskip=0pt}}}
应用于你的例子:
\documentclass[letterpaper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{exsheets-listings}
\AtBeginEnvironment{lstsolution}
{\PrintSolutionsF{\lstset{aboveskip=0pt,belowskip=0pt}}}
\begin{document}
\begin{question}
Write a statement that assign the value $10$ to the variable \texttt{x}.
\end{question}
\begin{lstsolution}
x = 10;
\end{lstsolution}
\begin{question}
Here comes another question.
\end{question}
\begin{solution}
A solution that is not made of code.
\end{solution}
\begin{question}
And a last question to see the spacing.
\end{question}
\end{document}