![Exsheets:如何在同一行打印“解决方案”?](https://linux22.com/image/281414/Exsheets%EF%BC%9A%E5%A6%82%E4%BD%95%E5%9C%A8%E5%90%8C%E4%B8%80%E8%A1%8C%E6%89%93%E5%8D%B0%E2%80%9C%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E2%80%9D%EF%BC%9F.png)
我想打印(转储)书末问题的答案。如果我直接使用,\printsolutions
我会将每个答案放在新行上(作为新段落)。
我需要将它们放在同一行(只有数字,没有名字),如下所示:
1)索尔一号。2)太阳二号。3)... ETC。
有没有什么方法/解决方法可以实现这一点?
如果是,有没有办法自动将节/小节名称包含在列表中(在同一行)?例如:¨
第 1 节 第一小节 1)索尔一号。2)太阳二号。第二小节 1)索尔一号。2)太阳二号。第2节第1小节1)索尔一……
编辑:
按照 cgnieder 编辑,我正在尝试找到一种方法来避免手动标记和“\nameref”。我想出了一个办法,但它没有正常工作 - “printsolutions”为各个部分提供了相同的名称。请同时查看内联文本和注释。救命!
\documentclass{scrartcl}
\usepackage{exsheets}
\setlength{\parindent}{0pt}
\DeclareQuestionProperty{section-title}
\SetupExSheets{counter-within=section ,
headings=inline-nr ,
counter-format=qu)}
\newcommand{\lsection}[1]{
\def\secName{#1}
\section{#1}
}
\SetupExSheets{section-hook = \noindent\bfseries
Section \GetQuestionProperty{section-title}{\CurrentQuestionID}
\space}
\begin{document}
\lsection{One}
\begin{question}
\SetQuestionProperties{section-title= \secName }
foo
\end{question}
\begin{solution}
foo
\end{solution}
\begin{question}
\SetQuestionProperties{section-title= \secName }
bar
\end{question}
\begin{solution}
bar
\end{solution}
Solutions for section "\secName" are: \printsolutions[section]\\ % OK
ALL the solutions until here are: \printsolutions % OK
\lsection{Two}
\begin{question}
\SetQuestionProperties{section-title= \secName }
baz
\end{question}
\begin{solution}
baz
\end{solution}
\begin{question}
\SetQuestionProperties{section-title= \secName }
foobar
\end{question}
\begin{solution}
foobar
\end{solution}
Solutions for section "\secName" are: \printsolutions[section]\\ % OK
ALL the solutions at this point are wrong, the 1st section name is "Two" instead of "One": \printsolutions % WRONG!!
\lsection{Answers} %changing '\lsection' to '\section' makes all the section names as "Two"
This is the output of 'printsolutions' wrongly showing the same section name throuhout (the last name used):
\printsolutions
\end{document}
答案1
inline-nr
您可以使用标题实例并将设置\exsheets_par:
等于 来获得所需的列表\scan_stop:
。第二点可防止exsheets
a) 在其环境后插入 a\par
和 b) 在 后插入垂直空格\par
。这是一个未记录的功能,但为此目的内置了额外功能。我将为其添加一个官方用户界面。
不幸的是,目前没有办法自动获取完整列表,并在适当的位置插入章节标题。但你可以使用exsheets
'\exlabel
机制,或许可以结合nameref
使用半自动化解决方案:
\documentclass{scrartcl}
\usepackage[load-headings]{exsheets}
\SetupExSheets{counter-within=section}
\usepackage{nameref}
% place \label and \exlabel simultaneously:
\newcommand*\mylabel[1]{\label{#1}\exlabel{#1}}
\begin{document}
\section{One}\mylabel{sec:foo}
\begin{question}
foo
\end{question}
\begin{solution}
foo
\end{solution}
\begin{question}
bar
\end{question}
\begin{solution}
bar
\end{solution}
\section{Two}\mylabel{sec:bar}
\begin{question}
baz
\end{question}
\begin{solution}
baz
\end{solution}
\begin{question}
foobar
\end{question}
\begin{solution}
foobar
\end{solution}
\section{Solutions}
\ExplSyntaxOn
\cs_set_eq:NN \exsheets_par: \scan_stop:
\ExplSyntaxOff
\SetupExSheets{headings=inline-nr,counter-format=qu)}
\textbf{Section \nameref{sec:foo}} \printsolutions[section={\S{sec:foo}}]
\textbf{Section \nameref{sec:bar}} \printsolutions[section={\S{sec:bar}}]
\end{document}
编辑
0.13 版(2014/05/11)exsheets
提供了选项section-hook
。与和问题属性结合使用时,nameref
可以按以下方式使用,仅使用一呼叫\printsolutions
:
\documentclass{scrartcl}
\usepackage[load-headings]{exsheets}[2014/05/11]
\SetupExSheets{counter-within=section}
\DeclareQuestionProperty{section-title}
\usepackage{nameref}
\begin{document}
\section{One}\label{sec:foo}
\begin{question}
\SetQuestionProperties{section-title=\nameref{sec:foo}}
foo
\end{question}
\begin{solution}
foo
\end{solution}
\begin{question}
\SetQuestionProperties{section-title=\nameref{sec:foo}}
bar
\end{question}
\begin{solution}
bar
\end{solution}
\section{Two}\label{sec:bar}
\begin{question}
\SetQuestionProperties{section-title=\nameref{sec:bar}}
baz
\end{question}
\begin{solution}
baz
\end{solution}
\begin{question}
\SetQuestionProperties{section-title=\nameref{sec:bar}}
foobar
\end{question}
\begin{solution}
foobar
\end{solution}
\section{Solutions}
\SetupExSheets{
headings = inline-nr , % numbered and inline
counter-format = qu) , % numbers 1) 2) ...
section-hook = % code to be added before solutions of a new section
% are printed
% \par begin a new paragraph for a new section
\noindent\bfseries
Section \GetQuestionProperty{section-title}{\CurrentQuestionID}%
\space
}
\printsolutions
\end{document}