eigene Theoremumgebung

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Linuil
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Do 12. Sep 2013, 11:17

eigene Theoremumgebung

Beitrag von Linuil »

Hallo,
ich würde gerne eine Theorem-ähnliche Umgebung haben, die die Nummerierung von Theorem übernimmt, dessen Name aber nicht festgelegt ist, sondern jedesmal frei gewählt werden kann.
Das soll zB so aussehen:

1. Situation
....

2. Theorem
...

3. Regularitätsvoraussetzungen
...

4. Theorem
...

Ich habe es so probiert, leider setzt er mir dann den optionalen Namen immer in Klammern und ich hätte es gerne ohne Klammern.
\documentclass{book}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} 
\usepackage[ngerman]{babel}

\usepackage[amsthm]{ntheorem} % Theorem Formatting
\theoremstyle{changebreak}
\newtheorem{thm}{Theorem}[chapter]

\newtheoremstyle{dummystyle}{##2. ##3}{}
\newtheorem{dummy}[thm]{}

\begin{document}

\chapter{mein Kapitel}

\begin{dummy}[Situation]
...
\end{dummy}

\begin{thm}
...
\end{thm}

\begin{dummy}[Regularit\"atsvoraussetzungen]
...
\end{dummy}

\begin{thm}
...
\end{thm}

\end{document}
Vielen Dank für eure Hilfe im Voraus. Hab leider in der Suche nichts gefunden.

Linuil

Noch so einer

Beitrag von Noch so einer »

Wenn Du das optionale Argument dafür missbrauchen willst, dann kannst Du auf Basis der \newtheoremstyle-Anweisungen aus ntheorem.sty natürlich eigene Stile definieren, wobei Du im Fall, dass das optionale Argument angegeben ist, das erste Argument (##1) einschließlich dem zugehörigen Leerzeichen weglässt. Hier als Beispiel ein abgeändertes changebreak:
\documentclass{book}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[amsthm]{ntheorem} % Theorem Formatting
\theoremstyle{changebreak}
\newtheorem{thm}{Theorem}[chapter]
\makeatletter
\newtheoremstyle{dummystyle}% abgeleitet von changebreak
  {\item[\rlap{\vbox{\hbox{\hskip\labelsep \theorem@headerfont
          ##2\ ##1\theorem@separator}\hbox{\strut}}}]}%
  {\item[\rlap{\vbox{\hbox{\hskip\labelsep \theorem@headerfont
          ##2\ ##3\theorem@separator}\hbox{\strut}}}]}% Hier wurde" ##1\ " und die Klammern um ##3 entfernt.
\makeatother
\theoremstyle{dummystyle}
\newtheorem{dummy}[thm]{Theorem}

\begin{document}

\chapter{mein Kapitel}

\begin{thm}
...
\end{thm}

\begin{dummy}[Situation]
...
\end{dummy}

\begin{dummy}
...
\end{dummy}

\begin{dummy}[Regularit\"atsvoraussetzungen]
...
\end{dummy}

\end{document}
Die feine englische Art ist das so aber nicht. Besser wäre, für Situation und Regularitätsvoraussetzung eigene Umgebungen zu definieren., also:
\documentclass{book}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[amsthm]{ntheorem} % Theorem Formatting
\theoremstyle{changebreak}
\newtheorem{thm}{Theorem}[chapter]
\newtheorem{Situation}[thm]{Situation}
\newtheorem{RV}[thm]{Regularit\"atsvoraussetzungen}

\begin{document}

\chapter{mein Kapitel}

\begin{thm}
...
\end{thm}

\begin{Situation}
...
\end{Situation}

\begin{thm}
...
\end{thm}

\begin{RV}
...
\end{RV}

\end{document}

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Ich würde ja einfach den Namen nicht fest sondern als Befehl vorgeben. Dann kann man ihn leicht lokal umdefinieren:
\documentclass{book}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[amsthm]{ntheorem} % Theorem Formatting
\theoremstyle{changebreak}
\newcommand\theoremname{Theorem}
\newtheorem{thm}{\theoremname}[chapter]

\newenvironment{dummy}[1][\theoremname]
 {\edef\theoremname{#1}%
  \begin{thm}%
 }   
 {\end{thm}}

\begin{document}

\chapter{mein Kapitel}

\begin{dummy}[Situation]
 ...
\end{dummy}

\begin{thm}
 ...
\end{thm}

\begin{dummy}[Regularit\"atsvoraussetzungen]
 ...
\end{dummy}

\begin{thm}
 ...
\end{thm}

\end{document}

Linuil
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Do 12. Sep 2013, 11:17

Beitrag von Linuil »

Danke für die schnellen Antworten, das hilft mir weiter.

Für jedes eigene Umgebungen zu definieren, ist leider nicht möglich. Für Situation wäre es gerade noch so sinnvoll, andere Sachen wie Regularitätsvoraussetzungen und weiters kommen nur einmalig. Und es sind mindestens 15-20 verschiedene Fälle, die ich nicht alle einzeln definieren möchte.

Vielen Dank

Antworten