newenvironment mit countern Thema ist als GELÖST markiert

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


LillyLa

newenvironment mit countern

Beitrag von LillyLa »

Hallo liebe Latex-Profis :),

ich habe die Vorgabe bekommen, eine neue Umgebung mit neuen Countern zu erstellen. Leider klappt überhaupt nichts...

Also einmal die Aufgabenstellung:
Die Aufgabe soll stets in einer eigenen Zeile beginnen.
Am Beginn soll fett Aufgabe xx.yy stehen ( xx = Nummer der aktuellen
Section und yy = Nummer der Aufgabe innerhalb der Section (also ein eigener
Zähler) sein soll.
Nach der Nummer der Aufgabe soll in Klammern (und ebenfalls fett) das Thema der Aufgabe stehen, das als verpflichtender Parameter übergeben werden soll. Anschließend soll der eigentliche Inhalt der Umgebung auf einer neuen Zeile beginnen. Am Ende der Aufgabe soll ganz am rechten Zeilenende einer ansonsten leeren Zeile der Text (in normaler Schrift) Gesamtpunktzahl bei Aufgabe xx.yy: v P. stehen, wobei v die Summe der Punkte der Teilaufgaben innerhalb dieser Aufgabe sein soll, xx und yy sind wieder wie oben beschrieben.
\documentclass[12pt,a4paper]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\setlength{\parindent}{0mm}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{dcolumn}
%mehr usepackage dürfen nicht eingebunden werden !!!!

\setlength{\parindent}{0mm}

%----------------------------------------------------------------------
\begin{document}

%Counter der Section
\newcounter{sec}[section]
\renewcommand*\thesec{\arabic{sec}.}
%Counter dahinter
\newcounter{thema}[section]
%%%%%%%%%%%
\newenvironment{Aufgabe}
{\, \hfill \newline
\textbf{Aufgabe \stepcounter{sec} \thesec} }
{%ende
}
\end{document}
Wenn die newenviroment funktioniert, sollte dieser Text reichen zur Erstellung des Texts:
\section{Beispiel}
\begin{Aufgabe}{Thema 1}
\begin{Teilaufg}[?]{4}
Hier ist der Text.
\end{Teilaufg}
\begin{Teilaufg}{3}
Umfangreicher langer Text,
damit die Zeile auch voll wird
und ein Zeilenumbruch entsteht,
dies sollte nun aber reichen.
\end{Teilaufg}
\end{Aufgabe}
Und noch eine Aufgabe:
\begin{Aufgabe}{Thema 2}
Ein Text vorweg.
\end{Aufgabe}
Vielleicht habt ihr ja eine Idee, wie man eine solche "Aufgabenumgebung" erstellen kann. Die Teilaufgaben habe ich erstmal vernachlässig...
Ich freue mich sehr über Vorschläge und auf eure Hilfe.[/code]

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Du änderst \parindent zweimal mit dem gleichen Wert in Deiner Präambel. Stattdessen solltest Du lieber die Klassenoption parskip verwenden. Dann brauchst Du für mögliche Absätze kein \\ aufzurufen, sondern setzt eine Leerzeile im Quelltext.

LillyLa

Beitrag von LillyLa »

stimmt....ist versehentlich doppelt. Danke für den Hinweis. :)
Weißt du auch eine Lösung für mein eigentliches Problem?
Insbesondere bei den countern weiß ich nicht, wie man diese definiert, da sie einfach nicht weiterzählen.... und ich brauche doch auf mehrere auch für die Teilaufgaben

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Kannst Du bitte ein richtiges Minimalbeispiel erstellen? Es sollte möglichst klein, aber lauffähig sein und Dein Problem zeigen - also das Nicht-Weiterzählen des Zählers.

Off topic: Warum dürfen keine weiteren Pakete geladen werden?

LillyLa

Beitrag von LillyLa »

Leider ist dies eine Vorgabe.

Also es soll hinterher so aussehen:
Aufgabe 1.1 (Thema 1)
Teilaufgabe 1.1.i (4 P.):
Teilaufgabe 1.1.ii (3 P.):

Gesamtpunktzahl bei Aufgabe 1.1: 7 P.

Und noch eine Aufgabe:
Aufgabe 1.2 (Thema 2)
Teilaufgabe 1.2.i (5 P.):

Leider bekomme ich den zweiten zähler nicht hin, also das 1.2 und das er automatisch die Themen entsprechend hochzählt.

\documentclass[12pt,a4paper]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\setlength{\parindent}{0mm}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{dcolumn}


%----------------------------------------------------------------------
\begin{document}


%Aufgabe 3
%Counter der Section
\newcounter{sec}[section]
\renewcommand*\thesec{\arabic{sec}.}

%Counter dahinter
\newcounter{thema}[section]
%%%%%%%%%%%
\newenvironment{Aufgabe}
{\, \hfill \newline
\textbf{Aufgabe \stepcounter{sec} \thesec} }
{%ende
}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Beispiel}
\begin{Aufgabe}{Thema 1}
dsfefe
\end{Aufgabe}

\section{Beispiel}
\begin{Aufgabe}{Thema 1}
dsfefe
\end{Aufgabe}

\end{document}

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Du kannst mit
\newcounter{aufgabe}[section] 
einen Zähler aufgabe erstellen. Der wird bei jedem neuen Abschnitt (section) wieder zurückgesetzt, d.h. in einem neuen Abschnitt beginnt die Zählung der Aufgaben wieder bei 1.

Wenn in der Aufgabennummer die Abschnittsnummer mit angegeben werden soll, musst Du die Ausgabe des Aufgabenzählers, also \thesection entsprechend formatieren:
\renewcommand*\theaufgabe{\thesection.\arabic{aufgabe}.}
Dabei ist die \theaufgabe die formatierte Ausgabe der Abschnittsnummer. Der section Zähler wird bereits von der Klasse definiert.

Wenn die Aufgabe einschließlich Thema in einer eigenen Zeile stehen sollen, dann füge \par Befehle ein.

Auf das Paket inputenc mit Angabe der Kodierung der Dateien lässt sich schlecht verzichten, sonst wird die Eingabe der Umlaute aufwändig.

\documentclass[12pt,a4paper,parskip=half-]{scrartcl} 
 \usepackage[ngerman]{babel} 
 \usepackage[T1]{fontenc} 
 \usepackage[utf8]{inputenc}% muss mit Kodierung der Datei übereinstimmen

 \newcounter{aufgabe}[section] 
 \renewcommand*\theaufgabe{\thesection.\arabic{aufgabe}.}

 \newenvironment{Aufgabe}[1] 
  {%
    \par
    \textbf{Aufgabe \refstepcounter{aufgabe} \theaufgabe\enskip(#1)}
    \par
  } 
 {\par\hfill Gesamtpunktzahl bei Aufgabe \theaufgabe: ...} 

 \begin{document} 
 \section{Beispiel} 
 \begin{Aufgabe}{Thema 1} 
   Text
 \end{Aufgabe} 
  \begin{Aufgabe}{Thema 2} 
   Text
 \end{Aufgabe}

 \section{Beispiel} 
 \begin{Aufgabe}{Thema 1} 
  Text
 \end{Aufgabe} 
 \end{document} 

LillyLa

Beitrag von LillyLa »

Wow super dankeschön :)

Das hat mir sehr weitergeholfen...Ich muss nun in diese Aufgabe noch Teilaufgaben reinbekommen (auch durch eine neue Umgebung) und habe schon mal weiterprobiert und deinen Teil entsprechend erweitert.
Dabei gibt es folgende Vorgabe:
Am Beginn soll kursiv Teilaufgabe xx.yy.zz (w P.): stehen, wobei xx die Nummer der aktuellen Section, yy die Nummer der aktuellen Aufgabe innerhalb der Section und zz die Nummer der Teilaufgabe innerhalb der aktuellen Aufgabe sein soll. zz soll in kleinen römischen Ziffern angegeben sein (z.B. iii für 3). w ist die Anzahl er Punkte für diese Teilaufgabe und soll als verpflichtender Parameter übergeben werden. Anschließend (nach dem Doppelpunkt) soll der eigentliche Inhalt der Teilaufgabe auf der gleichen (!) Zeile (und nicht mehr kursiv) fortgesetzt werden. Am Ende der Teilaufgabe soll am Zeilenende ein (fett gesetztes) Zeichen (oder auch mehrere) stehen, welches beim Aufrufen der Umgebung als optionales Argument
eingegeben werden kann. Wird es nicht angegeben, so soll (ebenso fett) das
Ausrufezeichen dort erscheinen.

Ich habe prinzipiell das Erstellen der kursiv geschriebenen Teilaufgabe hinbekommen. Nur beim folgenden "normalen" Text verschluckt Latex jetzt immer den ersten Buchstaben. Woran liegt das?

Zudem verstehe ich noch nicht, wie es mit der Punktezahl gemeint ist und dem optinalen fetten Argument. Verstehst du bzw. wer anders das? :?

Also es soll dann wiefolgt aussehen:
\begin{Aufgabe}{Thema 1}
\begin{Teilaufg}[?]{4}
Hier ist der Text.
\end{Teilaufg}
\begin{Teilaufg}{3}
Hier ist der Text.
\end{Teilaufg}
\end{Aufgabe}

Wenn ich es richtig verstehe ist das Zeichen in den [] das optionale Argument und in den {} die Punktzahl. Aber wie bekommt man das in der Umgebung hin zu definieren?

Vielen lieben Dank schon mal im Voraus. :)
%Präambel wie gehabt

\begin{document}


%Counter der Section
\newcounter{aufgabe}[section] 
\renewcommand*\theaufgabe{\thesection.\arabic{aufgabe}} 
%Umgebung Aufgabe
\newenvironment{Aufgabe}[1] 
  { 
    \par 
    \textbf{Aufgabe \refstepcounter{aufgabe} \theaufgabe\enskip(#1)} 
    \par 
  } 
 {\par\hfill Gesamtpunktzahl bei Aufgabe \theaufgabe: ...P.} 
 
%Counter Teilaufgabe
\newcounter{teilaufgabe}[section] 
\renewcommand*\theteilaufgabe{\thesection.\arabic{aufgabe}\roman{teilaufgabe}} 
%Umgebung Teilaufgabe
\newenvironment{Teilaufgabe}[1] 
  { 
    \par 
    \textit{Teilaufgabe \refstepcounter{teilaufgabe} \theteilaufgabe ...P.:} 
  } 
 {}

%Beispieltext 
\section{Beispiel} 
 \begin{Aufgabe}{Thema 1} 
   Text 
 \end{Aufgabe}
 \begin{Aufgabe}{Thema 2} 
   Text 
 \end{Aufgabe} 

 \section{Beispiel} 
 \begin{Aufgabe}{Thema 1} 
 Dieses ist die Hauptaufgabe, für die es eine Gesamtpunktzahl gibt. Im weiteren ist diese Aufgabe in zwei Teilaufgaben unterteilt. Die Summe der Punktzahlen der einzelnen Teilaufgaben ergibt die Gesamtpunktzahl
  \begin{Teilaufgabe}
  Dieses ist die erste spannende Teilaufgabe. Hierfür soll es im folgenden vier   Punkte geben.
  \end{Teilaufgabe}
  \begin{Teilaufgabe}
  Dieses ist die zweite verrückte Teilaufgabe. Hierfür soll es im folgenden drei Punkte geben.  
  \end{Teilaufgabe}
 \end{Aufgabe}


\end{document}

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

LillyLa hat geschrieben: Ich habe prinzipiell das Erstellen der kursiv geschriebenen Teilaufgabe hinbekommen. Nur beim folgenden "normalen" Text verschluckt Latex jetzt immer den ersten Buchstaben. Woran liegt das?
Bei der Definition der teilaufgabe Umgebung gibst Du an, dass die Umgebung ein obligatorisches Argument hat. Bei Deiner Anwendung der Umgebung gibst Du dann aber keines an, weshalb das erste Zeichen als solches angesehen wird. In der Definition der Umgebung wird das obligatorische Argument aber gar nicht verwendet. Also wird dieses erste Zeichen auch nirgendwo ausgegeben.

LillyLa hat geschrieben:
%Counter Teilaufgabe
\newcounter{teilaufgabe}[section] 
\renewcommand*\theteilaufgabe{\thesection.\arabic{aufgabe}\roman{teilaufgabe}}
Ich glaube nicht, dass Du den Zähler teilaufgabe so definieren willst. Wann soll dieser Zähler zurück gesetzt werden bzw. wann soll die Zählung der Teilaufgaben neu beginnen?

Innerhalb der Definition von \theteilaufgabe fehlt außerdem ein Punkt.

Beachte bitte, dass die Definition von Zählern, Befehlen und Umgebungen in aller Regel in die Präambel gehört.

LillyLa

Beitrag von LillyLa »

Dankeschön für den Hinweis mit der Präambel. :)

Wie erstelle ich denn so ein Argument? also ein optionales und ein festes?
Und wieso schreibt Latex den ersten Buchstaben des ersten Wortes nach der Teilaufgabe nicht?

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

LillyLa hat geschrieben: Und wieso schreibt Latex den ersten Buchstaben des ersten Wortes nach der Teilaufgabe nicht?
Das habe ich eigentlich oben erklärt??

Eine kurze Erklärung wie \newenvironment zu verwenden ist, findest Du in der LaTeX Referenz von Herbert Voß, die Du unter www.lehmanns.de/page/latexreferenz herunterladen oder bestellen kannst. Falls das nicht reicht, dann schau mal unter Wo finde ich gute Materialien um TeX/LaTeX/ConTeXt zu lernen?.

Antworten