Ich habe eine neue Umgbung mit Befehlen des Paketes `xparse`
definiert. Mit dabei sind konditionelle Abfragen, die das
optionale Argument prüfen.
Urspünglich wollte ich mir ja Ti*k*Z zu nutze machen, aber dafür
reicht mein Foo nicht aus. Vielleicht postet ja einer der anderen
Helfer eine Ti*k*Z-lastige Lösung, und liefert ein schickeres
Ergebnis. Vielleicht fallen dieser Person dann auch bessere Namen
ein, meine Phantasie ist heute sehr begrenzt ;-)
Wie ich sehe wurde dein Problem schon ganz gut gelöst, schau dir bitte trotzdem mal `xparse` an. Wenn die anderen nichts dagegen haben, mops ich mir die Lösung für das zweite Problem. Dann ist diese Antwort auch vollständig.
\listfiles
![alt text][1]
\documentclass[10pt,fleqn]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
%\usepackage{showframe}
\usepackage{geometry}
\geometry{includehead,includefoot,tmargin=20mm,bmargin=20mm,lmargin=40mm,rmargin=20mm}
%\setlength{\parindent}{0pt}
%\setlength{\parskip}{10pt}
\KOMAoption{parskip}{half}
\newenvironment{umg1}{\underline{Name1:}}{}
\usepackage{mdframed}
\usepackage{xparse}
\usepackage{tikz}
\newlength{\putoutside}
\setlength{\putoutside}{-1em}
\newcommand{\JBenvname}{JB:}
\NewDocumentEnvironment{JB}{ o }{
\newcommand{\JBsymbol}{}
\IfNoValueTF {#1}{}{%else
\ifblank{#1}{
\renewcommand{\JBsymbol}{$\downarrow$}
}{%else
\renewcommand{\JBsymbol}{#1}
}}
\par\medskip
\hspace{\putoutside}$\llap\JBsymbol\quad$\textbf{\JBenvname}%
}{\par\vspace{\intextsep}}
\usepackage{framed}
\definecolor{shadecolor}{rgb}{.85,.85,.85}
\newlength{\moveout}
\setlength{\moveout}{9cm}
\newenvironment{umg2}{\begin{shaded} \underline{Name2:}}{\end{shaded}}
\mdfdefinestyle{maja}{backgroundcolor=shadecolor,
leftmargin=-\moveout,innerleftmargin=\moveout,
rightmargin=-\moveout,innerrightmargin=\moveout,
hidealllines=true
}
\NewDocumentEnvironment{maja}{ o }{
\renewcommand{\JBenvname}{Maja:}
\begin{shaded}
\surroundwithmdframed[style=maja]{JB}
\begin{JB}[#1]%
}{\end{JB}}
\begin{document}
\begin{JB}
}{\end{JB}
\end{shaded}
}
\begin{document}
\begin{JB}
Hier steht text, aber auch etwas Mathe, es wurde
kein optionales Argument angegeben.
\[ a \neq b\]
Und auch ein neuer Absatz ist möglich.
\end{JB}
\blindtext
\begin{JB}[]
Hier wurde das optionale Argument zwar angegeben,
aber leer gelassen. Hier wird der Standard
\verb+\downarrow+ genutzt
\end{JB}
\begin{JB}[$\rightarrow$]
Hier wird das optionale Argument per Hand
gesetzt. Ein Rechtspfeil ist das Ergebnis.
\begin{equation}
b = c
\end{equation}
\end{JB}
\blindtext[3]
\begin{maja}
ohne Opt A:
Diese Umgebung verhält sich genau wie die obere,
hat aber einen anderen Namen, und wurde mit
\texttt{mdframed} umgeben.
\[ E = mc^2\]
Natürlich sind auch hier Absätze möglich, und die
\texttt{colorbox} rund rum.
Umgebung bricht bei Bedarf auch um. Allerdings sieht das
doof aus.
\end{maja}
\begin{umg1}
Text. Der Text kann auch über mehrere Zeilen gehen. Und auch Mathe-Umgebungen haben wie:
\[1+1=2\]
Oder auch was anderes.
\end{umg1}
\begin{umg2}
Text. Der Text kann auch über mehrere Zeilen gehen. Und auch Mathe-Umgebungen haben wie:
\[1+1=2\]
Oder auch was anderes.
\end{umg2}
\begin{maja}[]
mit opt A, aber leer; default \texttt{downarrow}
\end{maja}
\blindtext[3]
\begin{maja}[$\leftarrow$]
Nun mit Linkspfeil
\end{maja}
\end{document}
[1]: http://texwelt.de/wissen/upfiles/majaUmgebung.png