Eigene Umgebungen (Kaesten) für Satz, Def, ...

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


hphphp3
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Do 30. Nov 2017, 13:02

Eigene Umgebungen (Kaesten) für Satz, Def, ...

Beitrag von hphphp3 »

Liebe Experten

In meinem Skript erscheinen sehr viele Kästen für Def, Satz, Bew, ... und dazwischen etwas verbindender Fließtext. Mit dem Layout der Kästen bin ich eigentlich zufrieden. Da ich aber noch wenig Latex-Programmiererfahrung habe, würde ich mich über Verbesserungsvorschläge freuen.
Außerdem hätte ich gerne, dass der Kastentitel automatisch als Label verwendet wird (die Kastentitel müsste ich dann eindeutig vergeben), damit ich mich später im Text darauf beziehen kann. Leider klappt das nicht so naiv wie ich es (auskommentiert) probiert habe:

\documentclass[
twoside=false,
]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{ifthen}
\usepackage[dvipsnames]{xcolor}
\usepackage[framemethod=tikz]{mdframed}

%%%%%%%%%%%%%%%% Metakasten mit variabler Farbe 

\newenvironment{kast}[7]
{\begin{mdframed}[
		linewidth=1pt,
		linecolor=#4,
		needspace=3.5cm,
		ignorelastdescenders=true,
		frametitleaboveskip=5pt,
		frametitlerule=true,
		frametitlebackgroundcolor=#5,
		frametitlefont=\normalfont\bfseries\color{#6},
		frametitle={\textsf{#1}},
		roundcorner=3pt,
		backgroundcolor=#7]
		\ifthenelse{#3 = 1}{\protect\addcontentsline{toc}{subparagraph}{#1}}{}
%		\label{{#1}}
		#2
\end{mdframed} }
{}

% #1 : Titel des Kastens (Artkürzel und Name)
% #2 : Inhalt des Kastens
% #3 : Aufnahme ins Inhaltsverzeichnis (1 : ja)
% #4 : Farbe des Kastenrahmens
% #5 : Farbe der Titelleiste
% #6 : Farbe des Titelfonts
% #7 : Hintergrundfarbe des Kastenkörpers
% #8 : frei Nummerierung ja nein
% #9 : frei Label ja nein


%%%%%%%%%%%%%%%% Konkrete Kästen mit festgelegter Farbe:

%%%%%%%%%%%%%%%% ZBVkasten: Kastenfarbe = schwarz; 
\newcommand{\FarbeZbv}{black}
\newcommand{\TFarbeZbv}{white}
\newcommand{\HFarbeZbv}{white}
\newenvironment{ZbvHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeZbv}{\FarbeZbv}{\TFarbeZbv}{\HFarbeZbv}}{\end{kast}}
%%%%%%%%%%%%%%%%   für ZBV u ä.

%%%%%%%%%%%%%%%% Axiomskasten: Kastenfarbe = violett; 
\newcommand{\FarbeAxi}{violet}
\newcommand{\TFarbeAxi}{white}
\newcommand{\HFarbeAxi}{white}
\newenvironment{AxiHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeAxi}{\FarbeAxi}{\TFarbeAxi}{\HFarbeAxi}}{\end{kast}}
%%%%%%%%%%%%%%%%   für Axiome, Postulate, Konventionen u ä.

%%%%%%%%%%%%%%%% Experimentkasten: Kastenfarbe = magenta; 
\newcommand{\FarbeExp}{magenta}
\newcommand{\TFarbeExp}{white}
\newcommand{\HFarbeExp}{white}
\newenvironment{ExpHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeExp}{\FarbeExp}{\TFarbeExp}{\HFarbeExp}}{\end{kast}}
%%%%%%%%%%%%%%%%   für Experimente, Versuche, Beobachtungen, Phänomene, Gedankenexperimente u ä.

%%%%%%%%%%%%%%%% Definitionskasten: Kastenfarbe = blau; 
\newcommand{\FarbeDef}{blue}
\newcommand{\TFarbeDef}{white}
\newcommand{\HFarbeDef}{white}
\newenvironment{DefHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeDef}{\FarbeDef}{\TFarbeDef}{\HFarbeDef}}{\end{kast}}
%%%%%%%%%%%%%%%%   für Definitionen u ä.

%%%%%%%%%%%%%%%% Definitions und Satzkasten: Kastenfarbe = teal; 
\newcommand{\FarbeDuS}{teal}
\newcommand{\TFarbeDuS}{white}
\newcommand{\HFarbeDuS}{white}
\newenvironment{DuSHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeDuS}{\FarbeDuS}{\TFarbeDuS}{\HFarbeDuS}}{\end{kast}}
%%%%%%%%%%%%%%%%   für die Kombination aus Definitionen und Sätzen in einem Kasten.

%%%%%%%%%%%%%%%% Satzkasten: Kastenfarbe = grün; 
\newcommand{\FarbeSat}{Green}
\newcommand{\TFarbeSat}{white}
\newcommand{\HFarbeSat}{white}
\newenvironment{SatHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeSat}{\FarbeSat}{\TFarbeSat}{\HFarbeSat}}{\end{kast}}
%%%%%%%%%%%%%%%%   für Sätze, Lemmata, Korollare, Bemerkungen, Prinzipien u ä.

%%%%%%%%%%%%%%%% Beweiskasten: Kastenfarbe = hellgrün; 
\newcommand{\FarbeBew}{green}
\newcommand{\TFarbeBew}{darkgray}
\newcommand{\HFarbeBew}{white}
\newenvironment{BewHP}[2]{\begin{kast}{#1}{#2 %\qed
		}{0}{\FarbeBew}{\HFarbeBew}{\TFarbeBew}{\HFarbeBew}}{\end{kast}}
%%%%%%%%%%%%%%%%   für Beweise, Beweisskizzen, Beweisideen, Plausibilitätsbetrachtungen u  ä.

%%%%%%%%%%%%%%%% Beispielkasten: Kastenfarbe = grau; 
\newcommand{\FarbeBsp}{gray}
\newcommand{\TFarbeBsp}{white}
\newcommand{\HFarbeBsp}{white}
\newenvironment{BspHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeBsp}{\FarbeBsp}{\TFarbeBsp}{\HFarbeBsp}}{\end{kast}}
%%%%%%%%%%%%%%%%   für Beispiele, Probleme, Übungen, Aufgaben u ä.

%%%%%%%%%%%%%%%% Anwendungskasten: Kastenfarbe = dunkelgrau; 
\newcommand{\FarbeAnw}{darkgray}
\newcommand{\TFarbeAnw}{white}
\newcommand{\HFarbeAnw}{white}
\newenvironment{AnwHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeAnw}{\FarbeAnw}{\TFarbeAnw}{\HFarbeAnw}}{\end{kast}}
%%%%%%%%%%%%%%%%   für Anwendungen u ä.

%%%%%%%%%%%%%%%% Wiederholungskasten: Kastenfarbe = orange; 
\newcommand{\FarbeWdh}{orange}
\newcommand{\TFarbeWdh}{white}
\newcommand{\HFarbeWdh}{white}
\newenvironment{WdhHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeWdh}{\FarbeWdh}{\TFarbeWdh}{\HFarbeWdh}}{\end{kast}}
%%%%%%%%%%%%%%%%   für Wiederholungen u ä.

%%%%%%%%%%%%%%%% Zusammenfassungskasten: Kastenfarbe = rot; 
\newcommand{\FarbeZus}{red}
\newcommand{\TFarbeZus}{white}
\newcommand{\HFarbeZus}{white}
\newenvironment{ZusHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeZus}{\FarbeZus}{\TFarbeZus}{\HFarbeZus}}{\end{kast}}
%%%%%%%%%%%%%%%%   für Zusammenfassungen u ä.

%%%%%%%%%%%%%%%% Didaktikkasten: Kastenfarbe = pink; 
\newcommand{\FarbeDid}{pink}
\newcommand{\TFarbeDid}{white}
\newcommand{\HFarbeDid}{white}
\newenvironment{DidHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeDid}{\FarbeDid}{\TFarbeDid}{\HFarbeDid}}{\end{kast}}
%%%%%%%%%%%%%%%%   für didaktische Bemerkungen, Metabemerkungen u ä.

%%%%%%%%%%%%%%%% Merkekasten: Kastenfarbe = gelb; 
\newcommand{\FarbeMer}{yellow}
\newcommand{\TFarbeMer}{black}
\newcommand{\HFarbeMer}{white}
\newenvironment{MerHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeMer}{\FarbeMer}{\TFarbeMer}{\HFarbeMer}}{\end{kast}}
%%%%%%%%%%%%%%%%   für Merke! Wichtig für SA, Wichtig für Abi u ä.

%%%%%%%%%%%%%%%% Alarmkasten: Kastenfarbe = rot und Schriftfarbe rot; 
\newcommand{\FarbeAla}{red}
\newcommand{\TFarbeAla}{yellow}
\newcommand{\HFarbeAla}{yellow}
\newenvironment{AlaHP}[2]{\begin{kast}{#1}{\textsf{\color{\FarbeAla}\textbf{#2}}}{1}{\FarbeAla}{\FarbeAla}{\TFarbeAla}{\HFarbeAla}}{\end{kast}}
%%%%%%%%%%%%%%%%   für Sicherheitshinweise, Gefahrenhinweise, Verbote u ä.

\begin{document}
	
\chapter*{Inhaltsverzeichnis}\label{Inhaltsverzeichnis}
\setcounter{secnumdepth}{4} % Tiefe der automatischen Numerierung der Überschriften
\setcounter{tocdepth}{5}    % Tiefe des Inhaltsverzeichnisses
\renewcommand{\contentsname}{}{\def\clearpage{}\tableofcontents}
\clearpage

\begin{ZbvHP}
	{ZBV: Musterkasten für zur besonderen Verwendung}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.}
\end{ZbvHP}
\begin{AxiHP}
	{Axi.: Musterkasten für ein Axiom}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.}
\end{AxiHP}
\begin{ExpHP}
	{Exp.: Musterkasten für ein Experiment}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.}
\end{ExpHP}
\begin{DefHP}
	{Def.: Musterkasten für eine Definition}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.}
\end{DefHP}
\begin{DuSHP}
	{DuS: Musterkasten für eine Definition mit Satz}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.}
\end{DuSHP}
\begin{SatHP}
	{Sat.: Musterkasten für einen Satz}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.}
\end{SatHP}
\begin{BewHP}
	{Bew.: Musterkasten für einen Beweis}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.}
\end{BewHP}
\begin{BspHP}
	{Bsp.: Musterkasten für ein Beispiel}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.}
\end{BspHP}
\begin{AnwHP}
	{Anw.: Musterkasten für eine Anwendung}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.}
\end{AnwHP}
\begin{WdhHP}
	{WDH: Musterkasten für eine Wiederholung}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.}
\end{WdhHP}
\begin{ZusHP}
	{ZUS: Musterkasten für eine Zusammenfassung}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.}
\end{ZusHP}
\begin{DidHP}
	{DiB.: Musterkasten für eine didaktische Bemerkung.}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.
		Ggf. auch in der Randspalte.}
\end{DidHP}
\begin{MerHP}
	{Mer.: Musterkasten für ein Merke!}
	{Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.
		Ggf. auch in der Randspalte.}
\end{MerHP}
\begin{AlaHP}
	{GEF: Musterkasten für einen GEFAHRENHINWEIS!}
	{Zuhause nur mit Taschenlampenbatterien experimentieren!\\
		Man kann nur zwei mal in einen Laser schauen!\\
		Du sollst nicht durch 0 dividieren!}
\end{AlaHP}

Referenztest: 
%Wie im Axiom \ref{{#1}} auf Seite \pageref{{#1}} gefordert wird, ...

\end{document}
Momentan glaube ich zwar nicht, dass die Kästen durchnummeriert werden müssen (counter), aber falls ich mich später umentscheide, gibt es dann einen Weg, wie sich das nur in der Definition der eigenen Umgebung in der Präambel machen lässt, ohne dass man dann alle Kästen im Text händisch nachbearbeiten muss?

hphphp3
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Do 30. Nov 2017, 13:02

Beitrag von hphphp3 »

Entschuldigung!
Man kann das Minimalbeispiel ja deutlich kürzer machen:
\documentclass[
twoside=false,
]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{ifthen}
\usepackage[dvipsnames]{xcolor}
\usepackage[framemethod=tikz]{mdframed}

%%%%%%%%%%%%%%%% Metakasten mit variabler Farbe 
% #1 : Titel des Kastens (Artkürzel und Name)
% #2 : Inhalt des Kastens
% #3 : Aufnahme ins Inhaltsverzeichnis (1 : ja)
% #4 : Farbe des Kastenrahmens
% #5 : Farbe der Titelleiste
% #6 : Farbe des Titelfonts
% #7 : Hintergrundfarbe des Kastenkörpers
% #8 : frei Nummerierung ja nein
% #9 : frei Label ja nein
\newenvironment{kast}[7]
{\begin{mdframed}[
      linewidth=1pt,
      linecolor=#4,
      needspace=3.5cm,
      ignorelastdescenders=true,
      frametitleaboveskip=5pt,
      frametitlerule=true,
      frametitlebackgroundcolor=#5,
      frametitlefont=\normalfont\bfseries\color{#6},
      frametitle={\textsf{#1}},
      roundcorner=3pt,
      backgroundcolor=#7]
      \ifthenelse{#3 = 1}{\protect\addcontentsline{toc}{subparagraph}{#1}}{}
%      \label{{#1}}
      #2
\end{mdframed} }
{}

%%%%%%%%%%%%%%%% ZBVkasten: Kastenfarbe = schwarz; 
\newcommand{\FarbeZbv}{black}
\newcommand{\TFarbeZbv}{white}
\newcommand{\HFarbeZbv}{white}
\newenvironment{ZbvHP}[2]{\begin{kast}{#1}{#2}{1}{\FarbeZbv}{\FarbeZbv}{\TFarbeZbv}{\HFarbeZbv}}{\end{kast}}

\begin{document}
 \chapter*{Inhaltsverzeichnis}\label{Inhaltsverzeichnis}
\setcounter{secnumdepth}{4} % Tiefe der automatischen Numerierung der Überschriften
\setcounter{tocdepth}{5}    % Tiefe des Inhaltsverzeichnisses
\renewcommand{\contentsname}{}{\def\clearpage{}\tableofcontents}
\clearpage
\begin{ZbvHP}
   {ZBV: Musterkasten für zur besonderen Verwendung}
   {Dieser Kasten ist ein Muster für alle Kästen derselben Klasse. Und jetzt folgt noch etwas Beispieltext wegen des Zeilenumbruchs.}
\end{ZbvHP}

Referenztest: 
%Wie im Axiom \ref{{#1}} auf Seite \pageref{{#1}} gefordert wird, ...
\end{document}
Vielen Dank!

Antworten