Problem mit eigener Umgebung

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Hoffmann

Problem mit eigener Umgebung

Beitrag von Hoffmann »

Ich habe mir eine eigene Umgebung für Experimente gebastelt, jetzt ist die Zeile mit der Überschrift aber eingerückt und auch ein "\noindent" funktioniert leider nicht. Irgendjemand eine Idee? (PS: Ich weiß, auch der Abstand zum darauffolgenden Satz ist zu klein, aber das geht ja mit \vspace.

Hier das Minimalbeispiel:
\documentclass[a4paper]{article}

\usepackage{color, framed, ifthen}

\definecolor{UserGray}{rgb}{0.94,0.94,0.94}
\newcounter{experiment}
\newenvironment{experiment}[2][]{%
	\def\FrameCommand{\colorbox{UserGray}}%
		\MakeFramed{\parbox{\textwidth}{%
			\ifthenelse{\equal{#1}{}}{}{%
				\refstepcounter{experiment}%
				\label{exp:#2}%
				Experiment \theexperiment: #1}
			}%
			\FrameRestore%
		}%
	}%
}{%
	\endMakeFramed%
}

 \begin{document}
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.

\begin{experiment}[Sehr langer Name dieses beispielslosen und wirklich beispielhaften Beispielexperiments]{ExpLabel}
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
\end{experiment}

\end{document}
[/end]

Gast

Re: Problem mit eigener Umgebung

Beitrag von Gast »

Sorry, war noch ein Typo im Source, hier jetzt richtig (nur die Definition der Umgebung):
\newenvironment{experiment}[2][]{%
	\def\FrameCommand{\colorbox{UserGray}}%
		\MakeFramed{\parbox{\textwidth}{%
			\ifthenelse{\equal{#1}{}}{}{%
				\refstepcounter{experiment}%
				\label{exp:#2}%
				\textbf{Experiment \theexperiment: #1} %Hier hat was gefehlt
			}%
			\FrameRestore%
		}%
	}%
}{%
	\endMakeFramed%
}

Hoffmann

Beitrag von Hoffmann »

Hat denn niemand eine kleine winzige Idee woran das liegen könnte?

jowon
Forum-Anfänger
Forum-Anfänger
Beiträge: 31
Registriert: Mi 29. Jul 2009, 11:56

Beitrag von jowon »

Die Einrückung der parbox wird vom parindent Wert beeinflusst. Verwendet man das parskip Paket, so stimmt die Ausrichtung. Allerdings beeinflusst dies den Rest des Dokuments. Daher sollte die Einrückung der parbox in der Umgebung beeinflusst werde, leider verändert sich dann eventuell der Umbruch am Ende der Box entsprechend. Versuche daher dein Glück einmal mit dieser Variante:
\newenvironment{experiment}[2][]{% 
   \def\FrameCommand{\colorbox{UserGray}}% 
      \MakeFramed{\setlength{\parindent}{-2pt}\parbox{\textwidth}{% 
         \ifthenelse{\equal{#1}{}}{}{% 
            \refstepcounter{experiment}% 
            \label{exp:#2}% 
            \textbf{Experiment \theexperiment: #1} %Hier hat was gefehlt 
        }% 
         \FrameRestore% 
      }% 
   }% 
 \par\smallskip}{% 
   \endMakeFramed% 
}
Der Wert -2pt muss natürlich deiner parindent Einstellung negativ entsprechen. Der Skip ist nach Geschmack zu setzen.

Viel Erfolg

phi
Moderator
Moderator
Beiträge: 420
Registriert: Fr 6. Feb 2009, 21:28

Beitrag von phi »

Ohne die explizite \parbox sollte es funktionieren:
\newenvironment{experiment}[2][]{%
  \def\FrameCommand{\colorbox{UserGray}}%
  \MakeFramed{%
    \ifx&#1&\else
      \refstepcounter{experiment}%
      \label{exp:#2}%
      \noindent\textbf{Experiment \theexperiment: #1}%
      \endgraf
      \noindent
    \fi
    \FrameRestore
  }%
  \ignorespaces
}{%
  \endMakeFramed
  \ignorespacesafterend
}

Antworten