Отфильтровать содержимое 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}

Связанный контент