
私は学生向けの演習をいくつか作成しようとしています。そこで考えたのは、ソリューション カウンターが 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
。内容は展開されるため、ファイルに正しいトークンが書き込まれるように注意する必要があります。
以下のコードをファイルに入力すると、次の1行を含む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}