PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : eigene Umgebung



DaPhil
20-03-2010, 22:16
Hallo,
ich würde mir gerne eine eigene Umgebung definieren, die folgendes tut: Eine wichtige Formel farbig unterlegen. Hierfür habe ich mir schon folgenden Code zusammengelegt:


\begin{center}
\colorbox{yellow}[c]{
\parbox{0.4\linewidth}{
\begin{align}
\alpha = \beta
\end{align}
}
}
\end{center}

Bin mir nicht sicher ob das nun der beste Weg ist, aber naja - funktioniert. Da ich noch nicht sehr viel mit Latex gearbeitet habe, fällt es mir schwer mir eine neue "Funktion" basiceqn zu basteln, die mir den ganzen Schreibkram um die Formel herum erspart, so dass ich praktisch nur aufrufen müsste:


\begin{basiceqn}
\alpha = \beta
\end{basiceqn}


Könnte mir da jemand helfen?

lockstep
20-03-2010, 22:35
Deinen Code kann ich leider nicht beurteilen, da ich weder mit Boxen noch mit Matheumgebungen sonderlich vertraut bin. Neue Umgebungen bastelt man mit



\newenvironment{Name}[Zahl der Argumente]{Startbefehle}{Endbefehle}


Ein konkretes Beispiel:



\documentclass{article}

\usepackage{xcolor}
\usepackage{blindtext}

\newenvironment{centercolor}[1]{\begin{center}\color{#1}}{\end{center}}

\begin{document}

\blindtext

\begin{centercolor}{blue}
\blindtext
\end{centercolor}

\blindtext

\end{document}


lockstep

mechanicus
20-03-2010, 22:47
Hallo,

was du suchst ist das Paket empheq

Gruß
Marco

bobmalaria
20-03-2010, 22:49
richtig und was du da machen willst sieht so aus


\documentclass{article}

\usepackage{xcolor}
\usepackage{amsmath}
\usepackage{empheq}

\newenvironment{coloreq}[1][]{%
\setkeys{EmphEqEnv}{align}%
\setkeys{EmphEqOpt}{box={\fboxsep=10pt\colorbox{ye llow}},#1}%
\EmphEqMainEnv}%
{\endEmphEqMainEnv}


\begin{document}

\begin{coloreq}
5+5-2=3\\
2+2=1
\end{coloreq}



\end{document}

DaPhil
21-03-2010, 08:12
Ok, das kommt dem was ich machen wollte schon ziemlich nahe. Allerdings würde ich gerne die Formelnummerierung ebenfalls im Kästchen drin haben, und die Breite des Kästchens angeben, wie etwa 0.8\linewidth. Außerdem würde ich gerne so etwas wie eine Caption unter die Formel hängen können. Könntest du mir den Code kurz erklären? Was machen die 1en und warum sind Klammern um \endEmphEqMainEnv?

Danke schonmal!

lockstep
21-03-2010, 12:33
Könntest du mir den Code kurz erklären? Was machen die 1en und warum sind Klammern um \endEmphEqMainEnv?

Allgemein: Siehe S. 20f der empheq-Doku.

Der Ausdruck [1][] besagt, dass die neue Umgebung coloreq ein Argument haben soll, das jedoch optional ist - gibt der User nichts an, behandelt LaTeX das Argument als leer. Dieses Argument wird hier benutzt, um (dort, wo #1 steht) zusätzliche Formatierungsbefehle u.a. einzufügen - nimm mal in bobmalarias Beispiel versuchshalber folgendes:



\begin{coloreq}[left={A=B \Rightarrow\empheqlbrace}]
5+5-2=3\\
2+2=1
\end{coloreq}


Zu den Klammern um \endEmphEqMainEnv: Der Befehl ist hier schlicht und einfach das dritte obligatorische Argument von \newenvironment. Die Syntax dieses Befehls habe ich in meinem früheren Beitrag beschrieben.

lockstep

DaPhil
21-03-2010, 17:32
Hallo zusammen,
habe jetzt folgendes gemacht:


\documentclass{scrartcl}
\usepackage[applemac]{inputenc}
\usepackage{color}
\usepackage{amsmath}
\usepackage{framed}

\definecolor{shadecolor}{rgb}{0.8, 0.8, 1}

\begin{document}

\begin{shaded}
\begin{align}
\alpha=\beta \\
\frac{1}{2} = 0.5
\end{align}
\end{shaded}

\end{document}

Hieran möchte ich gerne noch einiges ändern. Z.B. einen Rahmen machen, die Breite festlegen, eine Beschreibung der Formel links unter dem Kasten. Habe mir die Doku zum framed package angeschaut allerdings komme ich damit nicht weiter. Kann mir da nochmal jemand helfen?

rais
21-03-2010, 22:27
Moin moin,


Hieran möchte ich gerne noch einiges ändern. Z.B. einen Rahmen machen, die Breite festlegen, eine Beschreibung der Formel links unter dem Kasten. Habe mir die Doku zum framed package angeschaut allerdings komme ich damit nicht weiter. Kann mir da nochmal jemand helfen?
hier hast Du was zum Spielen:


\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{color}
\usepackage{amsmath}
\begin{document}
\setlength\fboxsep{3pt}
\setlength\fboxrule{2pt}
\hfill\parbox{0.3\linewidth}{%
\fcolorbox{red}{cyan}{%
\parbox{\linewidth}{%
\begin{align}
\alpha=\beta \\
\frac{1}{2} = 0.5
\end{align}
}%
}\\[0.5ex]
\noindent Beschreibung
}
\end{document}

MfG

DaPhil
22-03-2010, 08:08
Hallo Rainer,
erstmal danke. Habe nun versucht daraus eine Umgebung zu basteln. funktioniert leider nicht.


\documentclass[
paper=a4,
fontsize=11pt,
oneside
]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{amsmath}

\newenvironment{FundEqn}[1]{\parbox{\linewidth}{\fcolorbox{black}{shadecolor} {\parbox{\linewidth}{\begin{align}}{\end{align}}}\ \[1.5ex]\noindent \bf #1}}

\begin{document}

\definecolor{shadecolor}{rgb}{0.8, 0.8, 1}

\setlength\fboxsep{3pt}
\setlength\fboxrule{0.5pt}

\begin{FundEqn}[Hier eine Beschreibung]
\frac{\hbar^2}{4 \pi n} = \int_0^1 x \text{d}x
\end{FundEqn}

\end{document}

Bekomme eine Menge Fehlermeldungen. Deswegen 1. Frage: Was habe ich falsch gemacht? Und noch eine 2. Frage: Mit dem framed package sieht es irgendwie unkomplizierter aus. Gibt es da eine Möglichkeit das auch mit diesem Paket so hinzubekommen?

Gruß
Phil

DaPhil
22-03-2010, 09:11
Hallo nochmal,
habe jetzt folgendes:


\documentclass{scrartcl}
\usepackage[applemac]{inputenc}
\usepackage{xcolor}
\usepackage{amsmath}
\usepackage{framed}

\newenvironment{BasicEqn}{
\definecolor{shadecolor}{rgb}{0.8, 0.8, 1}
\definecolor{framecolor}{rgb}{0, 0, 0}
\setlength\fboxrule{0.5pt}
\def\FrameCommand{\fcolorbox{framecolor}{shadecolo r}}
\MakeFramed{\FrameRestore}
}{\endMakeFramed \hfill \bf{Beschreibung}}

\begin{document}

\begin{BasicEqn}
\begin{eqnarray}
\alpha & = & \beta \\
\frac{1}{2} & = & 0.5 \\
\left( - \frac{\hbar^2}{2m} \vec{\nabla}^2_{\vec{x}} + V(\vec{x}) \right) \Psi(\vec{x}) & = & E \Psi(\vec{x})
\end{eqnarray}
\end{BasicEqn}

Hier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder Text

\end{document}

Das einzige was ich daran noch ändern möchte ist der Abstand vom Kasten zur Beschreibung und ich möchte die Beschreibung natürlich als Variable haben. Mein Versuch hat leider nicht funktioniert:


\newenvironment{BasicEqn}[1]{
\definecolor{shadecolor}{rgb}{0.8, 0.8, 1}
\definecolor{framecolor}{rgb}{0, 0, 0}
\setlength\fboxrule{0.5pt}
\def\FrameCommand{\fcolorbox{framecolor}{shadecolo r}}
\MakeFramed{\FrameRestore}
}{\endMakeFramed \\[0.5pt] \hfill \bf{#1}}


Kann mir da bitte jemand zeigen wie es richtig gemacht wird?
Danke

rais
22-03-2010, 21:00
Moin moin,


Das einzige was ich daran noch ändern möchte ist der Abstand vom Kasten zur Beschreibung und ich möchte die Beschreibung natürlich als Variable haben.
wenn's weiter nix ist;-)


\documentclass{scrartcl}
\usepackage[applemac]{inputenc}
\usepackage{xcolor}
\usepackage{amsmath}
\usepackage{framed}
\newcommand*\BasicEqnDesc{}%<--Beschreibungstext f. BasicEqn
\newenvironment{BasicEqn}[1]{%<--von nun an mit einem Parameter
\def\BasicEqnDesc{#1}%<--Parameter zwischenspeichern, sonst kommst Du da am Ende der Umgebung nicht ran
\definecolor{shadecolor}{rgb}{0.8, 0.8, 1}%
\definecolor{framecolor}{rgb}{0, 0, 0}%
\setlength\fboxrule{0.5pt}%
\def\FrameCommand{\fcolorbox{framecolor}{shadecolo r}}%
\MakeFramed{\FrameRestore}%
}{
\endMakeFramed
\vskip-0.5\normalbaselineskip%<--der negative Wert zieht den Beschreibungstext dichter an die Box
\hfill \textbf{\BasicEqnDesc}%<--Beschreibungstext
\bigskip%<--Beschreibbungstext vom nachfolgenden Text trennen
}

\begin{document}

\begin{BasicEqn}{Eine ganz dolle Beschreibung}
\begin{align}%<--wenn schon amsmath (vgl amsldoc u/o l2tabu)
\alpha & = \beta \\
\frac{1}{2} & = 0.5 \\
\left( - \frac{\hbar^2}{2m} \vec{\nabla}^2_{\vec{x}} + V(\vec{x}) \right) \Psi(\vec{x}) & = E \Psi(\vec{x})
\end{align}
\end{BasicEqn}

Hier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder TextHier wieder Text

\end{document}

MfG