过滤掉 Tex-File 的内容

过滤掉 Tex-File 的内容

我正在尝试为学生创建一些练习。因此,我的想法是,使用一个命令,如果解决方案计数器设置为 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. 不需要再做每一个练习,

  2. 将解决方案紧凑地放在一起,而不是分散在很多页面上

  3. (奖励)练习的数量(另一个计数器)与练习的解决方案一起显示

所以我希望我的英语不是太差,抱歉描述太长。我希望你能理解我的问题并能为我提供解决方案。

谢谢。

答案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}

相关内容