Re: Creazione ambienti simili a \exercise e \answer del TeXBook

#28664
Up
0
Down
::

Salve,

sto cercando di creare due ambienti simile ai comandi \exercise e \answer del TeXBook (pag 422 appendice E).

Il Grand Wizard nel sorgente del TeXBook scrive
`\exercise Esercizio
\answer Risposta `

Il testo dell’esercizio compare dove viene dato il comando \exercise, mentre \answer compare nell’appendice A e come item di un elenco numerato.

Vi chiedo se è possibile adattare quei due comandi in modo da creare due ambienti exercise e answer
`\begin{exercise}…
\end{exercise}
\begin{answer}…
\end{answer}`

oppure answer come argomento dell’ambiente exercise
`\begin{exercise}[answer]…
\end{exercise},
`
che si comportino allo stesso modo.

`\usepackage{amsthm}
\theoremstyle{definition}
\newtheorem{exercise}{Esercizio}[section]

\newwrite\ans
\immediate\openout\ans=\jobname.ans
\def\answer{\par
\immediate\write\ans{}
\immediate\write\ans{\string\item[\theexercise]}
\copytoblankline}
\def\copytoblankline{\begingroup\setupcopy\copyans}
\def\setupcopy{\ex@sanitize\obeylines}
{\obeylines \gdef\copyans#1
{\def\next{#1}%
\ifx\next\empty\let\next=\endgroup %
\else\immediate\write\ans{\next} \let\next=\copyans\fi\next}}

\makeatletter
\def\ex@sanitize{\def\do##1{\catcode`##1=12 }\dospecials
\@tempcnta=128
\loop\ifnum\@tempcnta<256
\catcode\@tempcnta=12
\advance\@tempcnta\@ne
\repeat}
\makeatother

\def\inputanswers{\immediate\closeout\ans
\section*{Risposte}
\begin{enumerate}
\input{\jobname.ans}
\end{enumerate}}`
Preso dritto dritto da manmac.tex, a parte certe correzioni per LaTeX; il documento va scritto così:
`\section{Titolo}

\begin{exercise}
Quanto fa $2+2$?\answer $4$

\end{exercise}`
La riga bianca tra la risposta e \end{exercise} ci vuole. Funziona anche con codifiche a 8 bit (forse anche con utf8).

Ciao
Enrico

Go to top