Seite 1 von 1
\newenvironment mit oberem Abstand
Verfasst: Di 14. Sep 2010, 16:11
von Sven
Hallo!
Ich möchte mir eine eigene Umgebung für Definitionen bastlen. Dies findet man ja auch zuhauf im Netz. Ich habe aber nirgendwo gefunden, wie man vor Begin der Umgebung einen Abstand einfügt. Ich wollte das so machen:
\newenvironment{defi}{\vspace{1cm} Definition:}
Ergebnis ist aber, dass zunächst das Wort Definition und dann erst der Abstand ausgegeben wird. Ich hab's auch schon so versucht:
\newenvironment{geschachtelt}{\vspace{1cm}}{Definition}
\newenvironment{defi}{\begin{geschachtelt}\end{geschachtelt}}
Ergebnis ist das gleiche - ich verzweifele hier bald. Kann mir jemand sagen wie das zu lösen ist?
Falls wichtig: ich benutze Miktex 2.8 unter Win7
Gruß, Sven
Verfasst: Di 14. Sep 2010, 16:29
von iTob
Das Problem liegt dra, dass diese Abstände nur zwischen den Absätzen auftauchen dürfen.
Siehe z.B. im LaTeX-Begleiter S. 890. In kurzform steht dort, dass vertikale Abstände immer zwischen Absätzen stehen müssen.
Mit einem vollständigen Minimalbeispiel, hätte ich dir das auch schnell programmiert
Außerdem bin ich nicht sicher, ob du die Syntax von \newenvironment richtig verstanden hast:
\newenvironment{<Name>}{<VOR Umgebungsinhalt>}{<NACH Umgebungsinhalt>}
% in lang:
\newenvironment{<Name>}{%
% hier kommt alles rein, was vor dem
% Umgebungsinhalt ausgegeben werden soll
}{%
% hier kommt alles rein, was nach dem
% Umgebungsinhalt ausgegeben werden soll
}
Im
Wiki wird übrigens genau dein Problem als Beispiel behalndelt

Verfasst: Di 14. Sep 2010, 16:40
von Sven
Da nke für die schnelle Antwort. Ja, das Bespiel hatte ich auch schon gesehen. Aber das ist doch prinzipiell genau das, was ich gemacht habe. Würde ich nur den Abstand wollen - und nicht noch das Wort Definition - so würde das ja auch klappen. Die Syntax ist mir klar.
Ich würde ja auch \newtheorem verwenden, aber da stört mich, das der Text kursiv ist und kein Zeilenumbruch in der ersten Zeile stattfindet. Wenn einer weiß, wie ich das hinbekomme wäre auch super!
Verfasst: Di 14. Sep 2010, 16:54
von Xenara
Vielleicht habe ich dich falsch verstanden, ohne Minimalbeispiel ist es of schwierig.
Aber wie wärs mit sowas?
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\newenvironment{definition}{\par\vspace*{2cm}\noindent Definition:}
\begin{document}
Text ohne Absatz davor.
\begin{definition}
Hier steht irgendwas von einer Definition. Und nach einiger Zeit, wenn die Zeile dann auch wirklich voll ist, gibt es auch einen Zeilenumbruch.
\end{definition}
Text ohne Absatz danach.
\end{document}
Verfasst: Di 14. Sep 2010, 17:05
von Sven
Juchu, genau so hab ich mir das vorgestellt. Jetzt versteh ich auch, wie's funzt: mit \par macht man einen Absatz und erst zwischen Absätzen kann man ja \vspace anwenden. Hätte ich auch drauf kommen können.
Vielen vielen Dank!
Verfasst: Di 14. Sep 2010, 17:15
von Xenara
Das war eigentlich ganz einfach, denn die Lösung stand fast im Klartext in dem von iTob verlinkten Wiki:
%Umgebung mit Argument
\newenvironment{KleinerAbsatzmitAbstandDavor}[1]{\par\vspace{#1}\tiny}{\par}
Aber manchmal sieht man auch einfach den Wald vor lauter Bäumen nicht.