Hallo liebes Forum!

Ich habe mir zwei sehr einfache Umgebungen definiert. Diese würde ich gerne etwas modifizieren und um jeweils ein Argument erweitern.

Zunächst mein Minimalbeispiel:

Open in writeLaTeX
\documentclass[paper=a4,10pt,oneside,fleqn]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage{csquotes}
\usepackage[T1]{fontenc}
\usepackage{xcolor} 
\usepackage{framed}

\usepackage{geometry}
\geometry{includehead,includefoot,tmargin=20mm,bmargin=20mm,lmargin=40mm,rmargin=20mm}

\setlength{\parindent}{0pt}
\setlength{\parskip}{10pt}

\newenvironment{umg1}{\underline{Name1:}}{}

\definecolor{shadecolor}{rgb}{.85,.85,.85}
\newenvironment{umg2}{\begin{shaded} \underline{Name2:}}{\end{shaded}}

\begin{document}

Text ohne Umgebung

\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}

\end{document}

1.) Erstens hätte ich gerne für beide Umgebungen umg1 und umg2, dass man am linken Rand noch optional einen sehr kurzen Text (oder ein Symbol) hinzufügen kann.

Soll hießen: Ich würde bspw. dann die Umgebung mit begin{umg1}[$Downarrow$] aufrufen.

Das hätte dann zur Folge, dass im linken Seitenrand, auf der Höhe von "Name1", ein Downarrow erscheint.

2.) Zweitens ich gerne, dass bei der Umgebung umg2 die graue Hintergrundfarbe über die gesamte breite der Seite verläuft.

Könnt ihr mir hierbei mit einem konkreten Vorschlag Weiterhelfen?

Wichtig ist mir vor allem Punkt 1) - Punkt 2) ist nice-to-have.

Vielen lieben Dank im Voraus!

Martin

gefragt 23 Aug '14, 10:54

maja's gravatar image

maja
1173610
Akzeptiert-Rate: 100%

bearbeitet 23 Aug '14, 14:29

gast3's gravatar image

gast3
(ausgesetzt)

Die Umgebungen (sprich der Name) bleiben aber statisch? Bedeutet es soll kein Zähler mitgenommenn werden?

(23 Aug '14, 11:41) Johannes

Ich schreib mal ein wenig zusammen, Ergebnisse dann nach der Mittagspause.

(23 Aug '14, 11:42) Johannes

Eine wichtige Frage: Warum der Tag umgebungsvariablen? Meinst du damit Argumente für Umgebungen?

(23 Aug '14, 11:43) Johannes

Hey @Johannes! vielen Dank für deine Hilfe. Zu deinen Fragen: a) Der Name bleibt statisch. Kein Zähler. b) "umgebungsvariablen" habe ich aus Unwissenheit wohl so genannt. Argumente für die Umgebung ist wohl besser.

Danke! Martin

(23 Aug '14, 11:45) maja

Bitte nicht \parskip und \parindent von Hand setzen bei Verwendung von KOMA-Skript. Es gibt die nützliche Option \documentclass[parskip=...]{scr...}. In der Anleitung steht näheres. Ich hab hier mal parskip=half gewählt, was ungefähr eine halbe Zeile einfügt.

Ich habe framed durch mdframed ersetzt, weil es mehr kann und ich es kenne. Um die Box auf Seitebreite zu bekommen habe ich einen etwas ekligen Hack benutzt indem die Box einfach breiter als die Seite ist. Über \setlength\lrskip{...} kann man die Breite anpassen.

Open in writeLaTeX
\documentclass[parskip=half]{scrartcl}
\usepackage[framemethod=tikz]{mdframed}

\newenvironment{umg1}[1][]{%
  \noindent\llap{\smash{#1}\quad}%
  \underline{Name1:}%
}{}

\definecolor{shadecolor}{rgb}{.85,.85,.85}
\newlength\lrskip
\setlength\lrskip{10cm}
\newenvironment{umg2}{
  \begin{mdframed}[
    hidealllines=true,
    leftmargin=-\lrskip,
    innerleftmargin=\lrskip,
    rightmargin=-\lrskip,
    innerrightmargin=\lrskip,
    backgroundcolor = shadecolor
    ]%
  \underline{Name2:}%
}{
  \end{mdframed}
}

\begin{document}

Text ohne Umgebung

\begin{umg1}[$\Downarrow$]
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}

\end{document}

alt text

Permanenter link

beantwortet 23 Aug '14, 12:21

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

@Henri! Vielen Dank! Das ist sehr nett! Funktioniert alles einwandfrei und genau so wie ich es wünscht. Nochmals herzlichen Dank, das hat mir wirklich sehr geholfen. Martin

P.S: @Johannes: Dir auch vielen Dank!

(23 Aug '14, 12:25) maja

Nu, irgendwas hab ich vorhin falsch gemacht. Ich wollte den gleichen Ansatz mit mdframed nehmen wie du, aber bei mir hat das nicht gefunzt. Da muss ich doch gleich noch mal nachschauen.

(23 Aug '14, 16:10) Johannes

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 TikZ zu nutze machen, aber dafür reicht mein Foo nicht aus. Vielleicht postet ja einer der anderen Helfer eine TikZ-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.

alt text

Open in writeLaTeX
\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}
\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}}

\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:}
    \surroundwithmdframed[style=maja]{JB}
            \begin{JB}[#1]%
}{\end{JB}}

\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
    Umgebung bricht bei Bedarf auch um. Allerdings sieht das
    doof aus. 
\end{maja}
\begin{maja}[]
    mit opt A, aber leer; default \texttt{downarrow}
\end{maja}

\blindtext[3]
\begin{maja}[$\leftarrow$]
    Nun mit Linkspfeil
\end{maja}
\end{document}
Permanenter link

beantwortet 23 Aug '14, 15:57

Johannes's gravatar image

Johannes
7.3k294566
Akzeptiert-Rate: 43%

bearbeitet 23 Aug '14, 17:00

Danke! jetzt habe ich die Qual der Wahl. :-)

Uns selbst habe ich noch eine Alternative mit marginnote gebastelt:

\newenvironment{umgebung}[1][]{ \underline{Aufgabe:} {} \marginnote{\smash{#1}} }{}

Das heißt: Meine Anfrage ist mehr als ausreichend gelöst!

Vielen Dank an euch alle!

Martin

(23 Aug '14, 16:05) maja

Und das beste: Du kannst dir aus allen Antworten das beste/schönste rauspicken.

(23 Aug '14, 16:08) Johannes

Übrigens; bei mir läuft noch TL13, kann das mal jemand mit TL14 und aktuellem expl3 testen?

(23 Aug '14, 16:10) Johannes

Da Du ja gar keinen expliziten expl3-Code verwendest, sondern nur die xparse-Befehle, die es ja schon vergleichsweise lange gibt, sollte ein aktuelleres expl3 keine Schwierigkeiten machen.

(23 Aug '14, 21:10) cgnieder

Es geht auch mit framed:

Open in writeLaTeX
\documentclass[paper=a4,10pt,oneside,fleqn,parskip=half-]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage{csquotes}
\usepackage[T1]{fontenc}
\usepackage{xcolor} 
\usepackage{framed}

\makeatletter
\newenvironment{fullwidthshaded}{%
  \def\FrameCommand##1{%
    \hskip-\paperwidth\textcolor{shadecolor}{\vrule width \paperwidth}%
    \colorbox{shadecolor}{##1}%
    \textcolor{shadecolor}{\vrule width \paperwidth}\hskip -\paperwidth
  }%
  \MakeFramed{\FrameRestore}%
}{\endMakeFramed}%
\makeatother

\usepackage{geometry}
\geometry{includehead,includefoot,tmargin=20mm,bmargin=20mm,lmargin=40mm,rmargin=20mm}

\newenvironment{umg1}[1][]{%
  \par\noindent\makebox[0pt][r]{#1\hspace{\marginparsep}}%
  \underline{Name1:}\enskip\ignorespaces
}{\par}

\definecolor{shadecolor}{rgb}{.85,.85,.85}
\newenvironment{umg2}{%
\par
\begin{fullwidthshaded} \underline{Name2:}}{\end{fullwidthshaded}}

\begin{document}

Text ohne Umgebung

\begin{umg1}[$\Downarrow$]
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}

\end{document}

Die \par bei umg1 habe ich eingefügt, damit diese Umgebung immer einen neuen Absatz erzeugt. Dabei habe ich als Abstand zwischen optionalem Argument und Textbereich außerdem den normalen Abstand zwischen Randnotizspalte und Textbereich verwendet, also \marginparsep.

Den Schatten in den Rand bei umg2 habe ich einfach mit zusätzlichen \vrule-Anweisungen erzeugt, die in den Rand reichen. Dabei bin ich bewusst über die Papierbreite gegangen, weil man bei solchen Dingen immer einen sogenannten Anschnitt vorsehen sollte, damit es auch dann noch passt, wenn das Papier nicht 100% exakt gedruckt oder beschnitten wird. Dabei habe ich einen Wert gewählt, der garantiert ausreicht.

Da mdframed aber grundsätzlich überlegen ist, würde ich selbst ebenfalls eher die Lösung von @Henri verwenden. Ich wollte das nur der Vollständigkeit halber erwähnen.

Permanenter link

beantwortet 23 Aug '14, 12:52

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 23 Aug '14, 12:56

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×16
×5
×4

gestellte Frage: 23 Aug '14, 10:54

Frage wurde gesehen: 12,238 Mal

zuletzt geändert: 23 Aug '14, 21:10