PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : aufgaben/lösungen mit "answers"



martinc
07-03-2005, 08:00
Bei der Verwendung des Paketes "answers" für die Erstellung von Aufgabenblättern mit Lösungen wird jeweils in die neue Zeile gewechselt. Was müsste ich in folgendem Quellcode ändern, damit die Lösungen platzsparender ausgedruckt werden (wenn vielleicht auch nicht im Sinne von Knuth), und zwar z.B. [1] lösung1 [2] lösung2 [3] lösung3 .... (oder evtl. eckige Klammern oder runde, statt 1., 2., 3.)
und allgemein möchte ich gerne auch die aufgaben flexibler anordnen (z. B. mehrspaltig, falls es nur kurze Aufgaben sind)

Mein Quellcode war:

\documentclass[12pt,a4paper]{article}
\usepackage{answers}
\usepackage{ngerman}
\Newassociation{sol}{solutions}{ans}
\newtheorem{ex}{Aufgabe}
\begin{document}
\Opensolutionfile{ans}[ans1]
\section{Aufgaben}
\begin{ex}
$x^2-3x=0$
\begin{sol}
$\{0;3\}$
\end{sol}
\end{ex}
\begin{ex}
$x^2-9=0$
\begin{sol}
$\{\pm 3\}$
\end{sol}
\end{ex}
\Closesolutionfile{ans}
\section{Lösungen}
\input{ans1}
\end{document}
\endinput

Ich wäre dankbar um Ratschläge.
Martin

edico
07-03-2005, 09:26
Du kannst das pacakge multicol heranziehen. Beispielsweise nur die Lösungen 4-spaltig; aber da kannst ja nach deinen Bedürfnisse alle Variationen und auch Verschachtelungen durchspielen ...
...
\section{Lösungen}
\begin{multicols}{4}
\input{ans1}
\end{multicols}
...
edico

P.S. ich habe den 2.Teil deienes Anliegens übersehen:
im sty-file wird der command definiert, den du somit umbenennen und im header integrieren musst:
...
\renewcommand{\solutionstyle}[1]{\textbf{[#1]}
...

martinc
07-03-2005, 18:15
Vielen Dank für den Tipp, Edico!

Das mit den Spalten hab ich gleich ausprobiert, funktioniert tadellos. Aber dennoch würde ich eine Möglichkeit suchen, die Lösungen einfach fortlaufend ausgeben zu lassen, weil einige Lösungen sehr lang sind und ich es deshalb in folgender Form bräuchte:

[1] lösung1 [2] sehr lange lösung2 [3] noch längere lösungsnummer 3
[4] lsg4 [5] lösung5 usw.

Alles ohne Tabellen, aber natürlich ohne Umbruch nach der Nummer. Schaut bei der Lösung nicht sehr schön aus, aber dafür kompakt (und platzsparend zum Kopieren für Übungszettel).

Wenn du Zeit hast zum Antworten (oder auch andere), würde ich mich freuen
Martin

edico
07-03-2005, 21:57
Immer diese speziellen Wünsche (=Bedürfnisse) ;-)
[1] Sichere deinen answers.sty, indem du eine Kopie (z.B.) answers~.sty anlegst.
[2] Editiere den Style wie folgt ab Z179:
...
\newcommand{\newsolution}[1]{%
\@ifundefined{#1}{%
\global\@namedef{#1params}{{\Currentlabel}}%
\newenvironment{#1}[1]%
{%
\csname pre#1\endcsname
\textbf{[##1]}
% \trivlist
% \item[\hskip\itemsep{\@nameuse{#1label}{##1}}]
}%
% {\csname post#1\endcsname\endtrivlist}%
{\csname post#1\endcsname%\endtrivlist
}%
\global\@namedef{#1label}##1{\solutionstyle{##1}}%
}{\typeout{WARNING: environment #1 already in use}}%
}
\newcommand{\solutionstyle}[1]{\textbf{#1}}
\newcommand{\Currentlabel}{\@currentlabel}
\endinput
%%
%% End of file `answers.sty'.
[3] Kommentiere in der Präamble aus, wenn noch eingefügt:
%\renewcommand{\solutionstyle}[1]{\textbf{[#1]}}
...
Although it should work for you, I provide it `as is' and do not guarantee it in any way.
edico

martinc
09-03-2005, 13:19
hallo edico,

das mit dem sty-file ändern ist sicher eine gute idee (ich habs noch nie getan, und müsste die syntax erst lernen). Ich hab es gleich ausprobiert, wie du es vorgeschlagen hast.

Ergebnis:
Die Nummerierung mit eckigen Klammern funktioniert, aber die Lösungen stehen immer noch untereinander und nicht nebeneinander.

Aber edico findet sicher eine lösung ;-)
(wenn du zeit und lust hast)
gruss und danke

edico
09-03-2005, 15:21
... ? Das kann eigentlich nicht sein - bei mir wird's nebeneinander gesetzt ... ich muss jetzt weg und prüf nochmal.
edico

P.S. ich habe alles erweitert auf 4 Aufgaben und die 4 Lösungen werden nebeneinander gesetzt. Insofern liegt ein Kommunikationsproblem zwischen uns beiden vor. das kriegen wir geregelt.
Kommentier mal diese beiden Zeilen aus:
%-edico-\Opensolutionfile{ans}[ans1]
...
%-edico-\Closesolutionfile{ans}
aus.

P.S. 2. Ergänzung a la TOTO:
[1] master-file hat 2 section, Aufgaben 2-spaltig, Lösungen hintereinander weg; im Beispiel wird umgebrochen nach der 7.Lösung, was abhängig vom Satzspiegel ist und adaptiert werden könnte. Koma liefert grössere Textweite; ansonsten mit geometry o.ä.
\documentclass[12pt,a4paper]{article}
\usepackage{ngerman}
\usepackage[latin1]{inputenc}
\usepackage{answers}
\Newassociation{sol}{solutions}{ans}
\newtheorem{ex}{Aufgabe}
\usepackage{multicol}
\begin{document}
\section*{Aufgaben}
\begin{multicols}{2}
%--- 1.Aufg ----------
\begin{ex}
$x^2-3x=0$
\begin{sol}
$\{0;3\}$
\end{sol}
\end{ex}
%--- 2.Aufg ----------
\begin{ex}
$x^2-9=0$
\begin{sol}
$\{\pm 3\}$
\end{sol}
\end{ex}
%--- 3.Aufg ----------
.... undsoweiterundsoweiter ....
\end{multicols}
\section*{Lösungen}
\input{ans1}
\end{document}
[2] ans1
... wie gehabt ohne Veränderungen ...
[3] sty
ich hoffe, da sind keine Transfer-Probleme aufgetreten, was dann nicht wahrscheinlich ist, wenn das compiling durchgelaufen ist. Die Veränderung läuft darauf hainaus, dass der Urstyle - du kannst das unschwer an den Auskommentierungen ssehen - eine Liste gestaltet hat. Diese habe schlichtweg «kaltgestellt», so dass gem. deiner Wünsche mit Klammer und Fettdruck ... nunmehr in Reihe geprintet werden sollte.
[4] compiling
pdflatex foo
[5] result: Bei mir klappt es so vorzüglich: Bei 10 Aufgaben habe ich 2 «Türme»(Spalten) a 5 Aufgaben und 1 1/2 Zeilen mit 10 Lösungen. Was sein sollte ...
edico

martinc
10-03-2005, 19:57
Vielen Dank für die tollen erklärungen. Jetzt hat es tatsächlich geklappt, nach einigem probieren. Interessanterweise hat die Einrückung (wie beim Programmieren sonst üblich) alles verhindert. Ein kleiner Schönheitsfehler ist dann noch: Es kann vorkommen, dass die Nummer von der Lösung getrennt wird (ist aber nicht so schlimm), also mit Zeilenumbruch.

Jetzt wär es nur noch interessant (und hilfreich) zu wissen, ob es mit Kapitelbezug funktioniert. Also ich möchte mehrere Kapitel mit Übungen machen (mit unterschiedlichen Überschriften) und im Lösungsteil soll inder Überschrift jeweils darauf bezug genommen werden.

Beispiel:

Übungen: Gleichungen
....
Übungen: Gleichungssystemen
....


Lösungen: Gleichungen
....
Lösungen: Gleichungssystemen
...


Ich habe mir gedacht: Nicht verzagen, Edico fragen (oder wer auch immer mir helfen kann)

Danke und Gruß
Martin

edico
10-03-2005, 22:26
... ich denke, lass das so stehen. Das stört doch wirklich nicht, wenn eine Trennung erfolgt. Du musst dich entscheiden, ob du Buchdruck (Blocksatz) oder Flattersatz (rechts flatternd :: möglicherweise mit \raggedright) drucken willst ... aber ich hab eigentlich keine grosse Lust, drüber nachzudenken; s.o. - das geht mir besonders dann so, wenn ich die Sinnhaftigkeit einer Massnahme nicht erkennen kann ;-)

Deine Bezugsfrage versteh ich nicht, glaub ich. Oder meinst du referencing: das ich von der section_Lösung-Gleichung zur section_Aufgaben-Gleichung zurückspringen kann? Der Sprung kann natürlich auch umgekehrt erfolgen - von Aufgabe zu Lösungsteil. Dann so oder ähnlich ... adaptier das man mal auf deine Belange.

%Thema: \ref \label (s. auch \backref oder \varioref)
% \label{aufgabe1} =df. target for later use with \ref{aufgabe1}

section{Gleichungen}\label{sec:glei}
section{Systeme}\label{sec:syst}
...
section{Lösung - Gleichungen}\ref{sec:glei}
section{Lösung - Systeme}\ref{sec:syst}
...
edico

martinc
11-03-2005, 09:59
Hallo Edico,

vielen Dank für deine tollen Ratschläge. Du hast mir sehr geholfen. Das mit den Kapitel-Querverweisen war wirklich kein Problem (fast peinlich, dass ich dich das gefragt habe). Nochmals vielen Dank

Martin