過濾掉Tex文件的內容

過濾掉Tex文件的內容

我正在嘗試為學生創建一些練習。所以我們的想法是,如果解決方案計數器設定為 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}

相關內容