我正在尝试为学生创建一些练习。因此,我的想法是,使用一个命令,如果解决方案计数器设置为 0,则使解决方案变为白色,如果计数器设置为 1,则显示解决方案。
(此外,我创建了一个框,如果计数器设置为 0,则显示方格纸(用于计算);如果计数器设置为 1,则显示带有白色背景的带框的框和解决方案;但我想暂时保持简单,因此只需关注命令)
以下是该命令的一个最小工作示例:
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\newcounter{wf}
\setcounter{wf}{1}
\newcommand{\whf}[1]{%
\ifnum\value{wf}=0%
\textit{#1}%
\else%
\textcolor{white}{\itshape #1}%
\fi%
}
\begin{document}
The following word is white sometimes: \whf{Test}, hope it works.
\end{document}
它运行得很好并且很好,但是:
现在我想创建一个涵盖所有解决方案的概览。所以我只想显示解决方案而不显示练习。我所能期望的最好结果是:“除了 \whf 命令中的内容外,不显示任何内容”之类的。
我现在已经创建了大量的练习,我希望有一个解决方案,让我
不需要再做每一个练习,
将解决方案紧凑地放在一起,而不是分散在很多页面上
(奖励)练习的数量(另一个计数器)与练习的解决方案一起显示
所以我希望我的英语不是太差,抱歉描述太长。我希望你能理解我的问题并能为我提供解决方案。
谢谢。
答案1
如果解决方案只是文字,不涉及 TeX 代码,则可以将解决方案写入单独的文件。要打开文件,请使用
\newwrite\solfile
\immediate\openout\solfile\jobname Solutions.tex
\jobname
保存当前主 TeX 文件的名称,因此XXXSolutions.tex
如果主文件名为 ,则包含解决方案的文件将被命名为XXX.tex
。
要写入文件,请使用
\immediate\write\solfile{...}
这会将括号之间的内容写入\solfile
。内容已展开,因此您必须采取预防措施,确保正确的标记最终出现在文件中。
将以下代码放入文件中,将生成包含单行的test.tex
文件testSolutions.tex
\solution {Test}
您可以通过定义宏来格式化答案\solution
。
您的代码与文件命令:
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\newcounter{wf}
\setcounter{wf}{1}
\newwrite\solfile % <<<<<<<<<<<<<<<<<<<<<<
\immediate\openout\solfile\jobname Solutions.tex% <<<<<<<<<<<<<<<<<<<<<<
\newcommand{\whf}[1]{%
\ifnum\value{wf}=0%
\textit{#1}%
\else%
\textcolor{white}{\itshape #1}%
\fi%
\immediate\write\solfile{\noexpand\solution{#1}}% <<<<<<<<<<<<<<<<<<<<<<
}
\begin{document}
The following word is white sometimes: \whf{Test}, hope it works.
\end{document}