请解释 \Newassociation 并概述该软件包的工作原理

请解释 \Newassociation 并概述该软件包的工作原理

我发现答案软件包使用起来有点困难,文档对于我这样的新手来说也不是那么容易理解。我不确定,但有时似乎涉及多个文件,特别是我不理解\Newassociation,并谈到“符号文件句柄”。这听起来像是编程术语,我不明白。有人能用不同于手册的语言解释 \Newassociation 的功能吗?还请简单概述一下软件包的工作原理。

在此处输入图片描述

这项工作的替代方案,锻炼普罗布索恩,也不是特别容易理解。但如果您觉得这两个包更容易学习,请告诉我,我会考虑使用更简单的替代方案。

补充:不幸的是,这些软件包的文档没有包含实际描述或输出的视觉示例,因此我不确定应用了什么格式,尤其是当我似乎无法使其工作时。我认为文档最好包含输出描述,尤其是视觉描述。我也非常欣赏试图降低进入 LaTeX 世界的门槛的理念,所以也许软件包作者会善意考虑这个反馈并可能将其付诸实施。我认为,当它注定会变得复杂时,包含初学者版本的文档通常是一种很好的做法,就像 LaTeX 世界中的一些软件包一样。

答案1

我同意这个软件包的文档answers有点过于简洁。我觉得文档并不exercise难懂;它可以做很多事情,但我认为文档写得相当好。我从未使用过,probsoln所以我不会对此发表进一步的评论。

由于您具体询问了该 answers软件包,因此我尝试解释该软件包,并至少澄清文档中给出的简单示例。

首先,基本命令\Newassociation{xxx}{yyy}{zzz}执行以下操作:

  1. 它创建了一个环境{xxx},用于文档中问题本身的解决方案。这个环境通常不是[nosolutionfiles]除非在加载包时选择了该选项,否则不会显示。
  2. 它创建了一个环境{yyy},该环境将用于展示解决方案。这些解决方案被写入单独的文件(或多个文件),然后可以在稍后的位置输入到您的文档中(例如,在章节末尾或整本书的末尾)。
  3. 它根据 为解决方案文件创建文件命名模式zzz。要么使用单个文件(在这种情况下它将是zzz.tex),要么使用多个文件,在这种情况下,zzz它充当一种标签,用于标识解决方案的类型,并且文件名是明确给出的。

由于xxxyyyzzz用作环境/宏名称的一部分,因此它们只能包含字母,因为这些是 TeX 中多字符宏名称的唯一有效字符。与其他宏名称一样,它们区分大小写(Xxxxxx)。此外,您应确保它们不会与文档中可能存在的现有环境冲突。

在文档中,有三个示例文档 ( ansexam{1|2|3}.tex) 展示了其实际工作原理。我在这里选取了一个简单的示例 ( ansexam1.tex),并对其进行了一些注释。(在 TeXLive 发行版中,这些文件可以在 中找到/usr/local/texlive/2010/texmf-dist/doc/latex/answers/)。

\documentclass[12pt,a4paper]{article}
% First we load the package.
\usepackage{answers}
% Now we set up a solution set.
% The environment that marks solutions within exercises is {sol}.
% The environment that marks solutions to be displayed is {Solution}
% The solution file type is "ans".
\Newassociation{sol}{Solution}{ans}

% Now we set up a theorem-like environment for exercises (this is)
% standard LaTeX; you could also use any of the more sophisticated
% theorem packages to do this.
\newtheorem{ex}{Exercise}

\begin{document}

% The next command opens a file to store the solutions. Without the second
% argument, the file would be called `ans.tex`.  With the second argument
% the file is called `ans1.tex` and it is of the "ans" type.
\Opensolutionfile{ans}[ans1]

% Now we write our problems, and for each problem we write its solution into the
% "sol" environment.  The solutions will not be displayed here.
\section{Problems}
\begin{ex}
   First exercise
   \begin{sol}
      First solution.
   \end{sol}
\end{ex}
\begin{ex}
   Second exercise
   \begin{sol}
      Second solution.
   \end{sol}
\end{ex}

% Now that we are done with our exercises and our solutions,
% we close the solution file
%
\Closesolutionfile{ans}

% Now our document has created a file called "ans1.tex" which contains a bunch of
% "Solution" environments, one for each "sol" environment that we put into the 
% exercises. This file can now be \input back into another place in the document,
% here in the section called "Solutions".

\section{Solutions}
\input{ans1}
\end{document}

如果你运行该文档,你会发现它创建了一个ans1.tex如下所示的文件:

\begin{Solution}{1}
      First solution.

\end{Solution}
\begin{Solution}{2}
      Second solution.

\end{Solution}

环境Solution由命令设置\Newassociation。它有一些基本格式,您可以根据需要更改它们,可以使用包提供的钩子,也可以\renewenvironment在发出\Newassociation命令后使用。

例如,有一个钩子\solutionstyle用于格式化每个解决方案的标签。它最初设置为\bfseries,因此解决方案环境会产生:

1第一个解决方案

2第二种解决方案

您可以按如下方式重新定义它:

\renewcommand{\solutionstyle}[1]{\bfseries Answer to Exercise #1 }

现在您的解决方案将显示为:

练习 1 的答案第一个解决方案

练习 2 的答案第二种解决方案

yyy对于使用命令参数创建的任何环境,都可以进行更复杂的格式设置\Newassociation。有两个钩子,\preyyy\postyyy(在此示例中,这将是\preSolution\postSolution。)它们必须由您使用创建\newcommand,并将根据需要添加到输出解决方案的前面或后面。例如,如果您希望每个解决方案都以项目符号结尾,则可以使用:

\newcommand\postSolution{\hfill\textbullet}

这将导致在其自己的行上出现右对齐的项目符号(不好看,但只是一个例子。)

如果您希望您的解决方案格式更加精美,您可以\renewenvironment按照您喜欢的方式定义环境。

相关内容