PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frust



Earl Grey
08-04-2009, 15:12
...muss raus.

Warum um alles in der Welt funktioniert das hier:


\newcounter{example}
\newcommand{\beispiel}{\theexample \addtocounter{example}{1}}

aber das hier nicht:


\newcounter{example}
\newcommand{\beispiel}{\theexample \stepcounter{example}}

Und warum liefert folgendes beim ersten Vorkommen von \example 2?

\newcounter{example}
\setcounter{example}{1}
\newcommand{\beispiel}{\theexample \stepcounter{example}}

obwohl der Zähler sich nicht selbst erhöht? Fragen über Fragen, aber langsam gewöhnt man sich an das Gebastel mit LaTeX. Wörd oder jede andere grafische Textverarbeitung wäre vermutlich noch schlimmer.

Ich freue mich über Antworten, hauptsächlich wollte ich aber meinen Frust loswerden.

Grüße,
EG

Stefan_K
08-04-2009, 15:17
Hallo EG,

auch der zweite Code-Teil funktioniert bei mir, entsprechend tut es auch der dritte, \beispiel gibt erst 1 aus, beim nächsten Aufruf 2 etc.

Stefan

Earl Grey
08-04-2009, 15:22
Sorry, der zweite Teil sollte so lauten:


\newcounter{example}
\setcounter{example}{1}
\newcommand{\beispiel}{\theexample \addtocounter{example}{1}}

Ich habe den zweiten Teil mehrmals probiert, ohne \newcommand und mit. Er behauptet mir immer, dass ein \endcsname fehlen würde.

Stefan_K
08-04-2009, 15:24
Auch das funktioniert bei mir. Ein Minimalbeispiel:

\documentclass[a4paper,10pt]{article}
\newcounter{example}
\setcounter{example}{1}
\newcommand{\beispiel}{\theexample \addtocounter{example}{1}}
\begin{document}
\beispiel\ Test

\beispiel\ Test

\beispiel\ Test
\end{document}


Stefan

Earl Grey
08-04-2009, 15:44
Ah, man sollte den Zähler dann nicht in Überschriften verwenden:


\documentclass[abstracton]{scrreprt}
\newcounter{example}

\newcommand{\beispiel}{\theexample \stepcounter{example}}
\begin{document}
\section{\beispiel Test}

\beispiel Test

\beispiel Test
\end{document}

Stefan_K
08-04-2009, 15:52
Hättest Du gleich ein Minimalbeispiel angegeben, dann wäre das von Anfang sichtbar gewesen. Hier hilft \protect:

\section{\protect\beispiel Test}
Stefan

Earl Grey
08-04-2009, 15:56
Hättest Du gleich ein Minimalbeispiel angegeben, dann wäre das von Anfang sichtbar gewesen.
Stefan

Wenn das nicht jedes Mal so viel Aufwand wäre, die gesamte Konfiguration durchzuprobieren, an was es denn nun liegt, hätte ich das schon gemacht bzw. wenn ich gerochen hätte, dass es da Probleme gibt, wenn man den Befehl \stepcounter innerhalb von \section verwendet.

Ich sag' ja: manchmal sehr dubios dieses TeX und ohne 6 Monate Kurs kaum zu verstehen. Aber zum Glück muss ich's nur benutzen, nicht verstehen ;-)

Danke,
EG

PS: wenn man gleich
\newcommand{\beispiel}{\theexample \protect\stepcounter{example}}
verwendet, dann spart man sich den Befehl bei jedem Aufruf von \beispiel

Stefan_K
08-04-2009, 16:14
Immerhin hat man bei TeX die Chance, dank offener Quellen alles zu verstehen und so Lösungen zu finden, im Gegesatz zu Closed Source Software wie Word...
Dann gibts ja Foren wie dieses, wo weitergeholfen werden kann. ;)

Stefan

Earl Grey
08-04-2009, 16:21
Immerhin hat man bei TeX die Chance, dank offener Quellen alles zu verstehen und so Lösungen zu finden, im Gegesatz zu Closed Source Software wie Word...


Das geht bei TeX sicher besser als bei Word, aber der sechsmonatige Zeitrahmen für die Diplomarbeit (deren Inhalt nicht TeX ist) reicht wohl trotzdem nicht, um sich umfassendes Wissen über TeX anzueignen. Vielleicht kümmere ich mich da mal drum, wenn ich dann im Ruhestand bin ;-)

Grüße,
EG

sommerfee
08-04-2009, 22:09
Ah, man sollte den Zähler dann nicht in Überschriften verwenden:

Was sowieso eine schlechte Idee sein könnte, da daß Kommando dann ggf. 2x ausgewertet wird: Einmal für die Überschrift, und einmal für das Inhaltsverzeichnis. Das kann dann überraschende Ergebnisse liefern:



\documentclass[abstracton]{scrreprt}
\newcounter{example}

\newcommand{\beispiel}{\theexample \protect\stepcounter{example}}
\begin{document}
\tableofcontents
\section{\beispiel Test}

\beispiel Test

\beispiel Test
\end{document}


Liebe Grüße,
Axel

Earl Grey
09-04-2009, 10:06
Was sowieso eine schlechte Idee sein könnte, da daß Kommando dann ggf. 2x ausgewertet wird: Einmal für die Überschrift, und einmal für das Inhaltsverzeichnis.

Vielen Dank für den Hinweis. Wie kann ich das denn dann besser machen? Vielleicht erklärt das, warum der Zähler in meinem Fall bei 1 und nicht bei 0 anfängt. Ich schau' gleich mal ins Inhaltsverzeichnis, ob der Zähler dort mit 0 initialisiert wurde.

Ich habe irgendwo mal was von "Umgebungen" mitbekommen. Wenn ich das recht verstanden habe, dann gibt's sowas für Tabellen, Definitionen und Bilder. Kann ich so eine Umgebung vielleicht für Beispiele erstellen? Ich hätte das gerne so, dass die Beschriftung/Überschrift mit dem Beispieltext in einer Zeile steht und vom Schriftgewicht (Fett) und der Schriftart her so aussieht wie eine Überschrift. Wenigstens aber so, dass man "Beispiel X" deutlich vom nachfolgenden Text unterscheiden kann.

Ich verwende in meiner Arbeit auch Definitionen (shadethm), die Formatierung mit grauem Hintergrund für Beispiele ist mir aber zu aufdringlich.

Vielen Dank für eure Tipps, der Frust verschwindet langsam wieder :D
EG

PS: in der Tat werden im Inhaltsverzeichnis andere Zahlen für die Nummerierung der Beispiele angezeigt, als im Text bzw. der Überschrift selber. So soll das natürlich nicht sein.

PPS: Die Beispiele sollten dann auch nicht im Inhaltsverzeichnis auftauchen. Vielleicht kann man aber ein eigenes "Beispiel-Verzeichnis", ähnlich dem Abbildungsverzeichnis erstellen.

Curryhunter
09-04-2009, 12:15
Hallo,
Umgebungen kannst du z.B. mit:


\newcounter{Example}[chapter]
\newenvironment{example}
erstellen.

Grüße
Stefan

Earl Grey
09-04-2009, 14:31
Was ein Luxus!

Das hier:


\newcounter{beispiel}
\newcommand{\bsp}{\thebeispiel \stepcounter{beispiel}}
\newenvironment{beispiel}{\textbf{Beispiel \bsp: }}{}


...klappt prima. Wenn ich jetzt noch den Zähler referenzieren kann, so wie das bei Kapiteln mit \label geht, dann hab' ich alles, was ich brauch.

Stefan_K
09-04-2009, 15:38
Was hältst Du davon, theorem-Umgebungen zu verwenden? Die bieten das und noch viel mehr. Empfehlenswert sind amsthm (http://ctan.org/pkg/amsthm), siehe amsthm-Dokumentation (http://tug.ctan.org/tex-archive/macros/latex/required/amslatex/classes/amsthdoc.pdf), und ntheorem (http://ctan.org/pkg/ntheorem) (Doku (http://tug.ctan.org/tex-archive/macros/latex/contrib/ntheorem/ntheorem.pdf)). Ich bevorzuge amsthm.

Viele Grüße,

Stefan

voss
09-04-2009, 15:40
Das hier:


\newcounter{beispiel}
\newcommand{\bsp}{\thebeispiel \stepcounter{beispiel}}
\newenvironment{beispiel}{\textbf{Beispiel \bsp: }}{}


...klappt prima. Wenn ich jetzt noch den Zähler referenzieren kann, so wie das bei Kapiteln mit \label geht, dann hab' ich alles, was ich brauch.

\refstepcounter statt \stepcounter verwenden

Herbert

Earl Grey
09-04-2009, 16:27
Habe ntheorem und amsthm probiert. Beide liefern mir die Fehlermeldung "No counter 'Definition' defined". Vielleicht beißt sich das mit dem shadethm-Paket, welches ich für grau hinterlegte Definitionen verwende?


\refstepcounter statt \stepcounter verwenden


Leider wird bei dieser Referenz trotzdem nur der Verweis auf das Kapitel/Section/etc angezeigt.

Grüße,
Alex

voss
09-04-2009, 16:40
Habe ntheorem und amsthm probiert. Beide liefern mir die Fehlermeldung "No counter 'Definition' defined". Vielleicht beißt sich das mit dem shadethm-Paket, welches ich für grau hinterlegte Definitionen verwende?



Leider wird bei dieser Referenz trotzdem nur der Verweis auf das Kapitel/Section/etc angezeigt.


dann wendest du es falsch an ...

HErbert

Earl Grey
09-04-2009, 16:53
dann wendest du es falsch an ...


Deswegen will ich es ja gar nicht anwenden, aber wenn es nicht klappt, den Zähler zu referenzieren, wäre so eine Theorem-Umgebung ganz geschickt.

Hier mal ein bisschen was zum Knobeln:

\documentclass{scrreprt}

% farblich abgesetzte Definitionen
\usepackage{shadethm}
\newshadetheorem{myDef}{Definition}

\usepackage{amsthm}
\newtheorem{beispiel}{Beispiel}

\begin{document}

\begin{myDef}[test]
\end{myDef}

\end{document}

Earl Grey
09-04-2009, 16:56
Und falls sich dein Kommentar auf die Verweise bezogen hat, hier auch noch ein Minimalbeispiel für die Verweise:


\documentclass{scrreprt}

% neuen Zähler für die Nummerierung von Beispielen
\newcounter{beispiel}
\newcommand{\bsp}{\thebeispiel \refstepcounter{beispiel}}

% neue Umgebung für Beispiele
\newenvironment{beispiel}{\textbf{Beispiel \bsp: }}{}
\begin{document}

\chapter{Erstes Kapitel}
\section{Erster Abschnitt}
\begin{beispiel}
\label{bsp:first}
Erstes Beispiel
\end{beispiel}

Und nun ein Verweis auf das \ref{bsp:first}. Beispiel.
\end{document}

voss
09-04-2009, 17:01
Und falls sich dein Kommentar auf die Verweise bezogen hat, hier auch noch ein Minimalbeispiel für die Verweise:



\documentclass{article}

\newcounter{beispiel}
\newenvironment{beispiel}{\refstepcounter{beispiel }%
\textbf{Beispiel \thebeispiel: }}{}

\begin{document}
\section{foo}
\section{foofoo}
\section{foofoofoo}
\begin{beispiel}\label{baz}
bar
\end{beispiel}

eine Referenz auf~\ref{baz} und nicht auf die section.

\end{document}


Herbert

Earl Grey
09-04-2009, 17:29
Das war ja einfach