PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nummerierte Description Umgebung



don_shifty
29-08-2010, 14:16
hallo liebes foroum

ich möchte gerne eine nummeriert description-umgebung kreieren. dh eine nummer, ein fetter "titel" und dann die beschreibung dazu.

1. erster punkt der erste punkt ist der beste.
2. zweiter punkt der zweite punkt ist auch nicht schlecht.
3. dritter punkt der dritte punkt ist sowiso gut!

was ich versucht habe ist folgendes:


\newenvironment{mydescription}{ %
\newcounter{mydescription} %
\renewcommand{\descriptionlabel}[1]{%
\refstepcounter{mydescription}%
\hspace\labelsep \normalfont\bfseries \thedescription #1}}%
{\renewcommand{\descriptionlabel}[1]{#1}}

also die description-umgebung zuerst umdefinieren und dann aber wieder zurückdefinieren, sodass man die description am ende wieder normal brauchen kann.

allerdings funktionniert der code so nicht... kann mir jemand bitte sagen, was falsch ist?

danke!!!
mfg s.

mechanicus
29-08-2010, 14:24
Hi,

warum nimmst du nicht die enumerate-Umgebung. Kannst auch das Paket enumitem nutzen.

Für mehr Infos erstelle bitte ein Minimalbeispiel.

Gruß
Marco

don_shifty
29-08-2010, 14:52
warum nimmst du nicht die enumerate-Umgebung. Kannst auch das Paket enumitem nutzen.Marco

nun warum ich nicht die enum-umgebung nutze hat 2 gründe:
1.der offensichtliche: man müsste halt jedesmal
\item\hspace{\itemsep} \textbf{titel} Text
schreiben, anstatt \item[titel] Text
2.ich möchte sie nicht nehmen, damit ich lerne eigene umgebungen zu kreiren...

bei enumitem hab ich leider auch nicht gefunden was ich möchte.

ein mini-bsp würde wohl so aussehen (allerdings kann ich ja kein funktionierendes kreiren, solange ich nicht weiss was falsch ist....):


\documentclass[a4paper]{article}

\newenvironment{mydescription}{\newcounter{mydescr iption}\renewcommand{\descriptionlabel}[1]{%
\refstepcounter{mydescription}\hspace\labelsep \normalfont\bfseries \thedescription #1}}%
{\renewcommand{\descriptionlabel}[1]{#1}}

\begin{document}

\begin{mydescription}
\item[erster punkt] der erste punkt ist der beste.
\item[zweiter punkt] der zweite punkt ist auch nicht schlecht.
\item[zweiter punkt] der dritte punkt ist sowiso gut!
\end{mydescription}

\end{document}

mechanicus
29-08-2010, 15:28
1.der offensichtliche: man müsste halt jedesmal
\item\hspace{\itemsep} \textbf{titel} Text
schreiben, anstatt \item[titel] Text

Genau dafür wäre enumitem gut:

\documentclass[a4paper]{article}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}[label=\textbf{\arabic*.~Punkt:}]
\item der erste punkt ist der beste.
\item der zweite punkt ist auch nicht schlecht.
\item der dritte punkt ist sowiso gut!

\end{enumerate}
\end{document}



2.ich möchte sie nicht nehmen, damit ich lerne eigene umgebungen zu kreiren...

Das ist natürlich löblisch. Allerdings sollte man erstmal mit einfachen Sachen anfangen, um das Prinzip zu verstehen.
Das Problem ist, du definierst dir zwar mit newenvironment eine neue Umgebung, aber diese macht erstmal nichts.
FOlgendes Beispiel zeigt das:

\documentclass[a4paper]{article}
\newenvironment{test}{}{}
\usepackage{lipsum}
\begin{document}
\begin{test}
\lipsum[1]
\end{test}
\end{document}

In deinem Versuch hast du einfach nur ein paar Redefinitionen eingebaut.
Diese alleine machen aber auch nichts:

\documentclass[a4paper]{article}
\newenvironment{test}{\newcommand{\testA}{}\newcom mand{\testB}{}}{}
\usepackage{lipsum}
\begin{document}
\begin{test}
\lipsum[1]
\end{test}
\end{document}

Nutzt du innerhalb dieser Umgebung nun ein item -- so ist es verloren, denn es existiert keine Liste.

Jetzt kannst du deine description-Umgebung einbauen:

\documentclass[a4paper]{article}
\newenvironment{test}{\begin{description}}{\end{de scription}}
\usepackage{lipsum}
\begin{document}
\begin{test}
\item[bla]\lipsum[1]
\end{test}
\end{document}
und jetzt kannst du diverse Formatierungen vornehmen.

Gruß
Marco

don_shifty
29-08-2010, 15:56
danke mechanicus für die ausfühliche antwort! - ich sehe, dass ich die newenvironment sache noch nicht ganz kapiert hatte...

sorry für mein insistieren, aber ich hab das gewünschte resultat noch nicht hingekriegt...

die umgebung sieht jetz mehr oder weniger aus wie ich sie wollte, aber der counter wird nicht eingefügt... warum nicht?


\documentclass[a4paper]{article}
\newcounter{mydescription}
\newenvironment{mydescription}{\begin{description} %
\leftmargin=0em \itemindent=-2em%
\renewcommand{\descriptionlabel}{\refstepcounter{m ydescription} \hspace\labelsep \normalfont\bfseries \thedescription}}
{\end{description} \renewcommand{\descriptionlabel}{\thedescription}}
\usepackage{lipsum}
\begin{document}
\begin{mydescription}
\item[bla]\lipsum[1]
\end{mydescription}
\begin{description}
\item[item one] normal description
\end{description}
\end{document}

mechanicus
29-08-2010, 16:34
Hi,

um dir eigene Listen zu erstellen, würde ich stets auf die list-Umgebung zurückgreifen. Hier kannst du wirklich alles neu einstellen:

\documentclass[a4paper]{article}
\newcounter{mydescription}
\newenvironment{mydescription}{%
\begin{list}{\themydescription}{%
\setlength{\leftmargin}{0em}%
\setlength{\rightmargin}{2em}
\setlength{\itemindent}{2em}
\usecounter{mydescription}
\renewcommand\makelabel{\hfill\bfseries}
}
}{\end{list}}%

\usepackage{lipsum}
\begin{document}
\begin{mydescription}
\item\lipsum[1]
\item[bla]\lipsum[1]
\item\lipsum[1]
\end{mydescription}
\begin{description}
\item[item one] normal description
\end{description}
\end{document}

Gruß
Marco