PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \newcommand[1] in \newenvironment



Zoomy
17-06-2007, 15:00
Hallo!

Ich hab mal wieder ein Poblem...
Ich habe mir mehrere Umgebungen mit \newenvironment erschaffen.
In den Umgebungen erstelle ich dann jeweils mit picture einen Rahmen (wobei die Größe/Form der Unterschied ist). In der Umgebung will ich dann noch verschiedene neue Kommandos erstellen (die den gleichen Namen haben sollen, damit ich nicht immer was anderes schreiben muss)... Das geht auch alles soweit...
Wenn ich nun allerdings ein Parameter für \newcommand haben will, dann bekomme ich immer eine Fehler Meldung...
Wie bekomme ich es hin das ich in der Umgebung ein \newcommand mit Parameter schreiben kann... \newenvironment[1] will ich nicht haben da es später mal sehr viel mehr Kommandos werden...
Ich hoffe ich habe mich verständlich ausgedrückt :)
Würde mich über hilfe freuen
Fabian

Mein Minimalbeispiel:

\documentclass{scrartcl}
%------ Erste -----------------------------------------------
\newenvironment{bildeins}
{\setlength{\unitlength}{1cm} \linethickness{1pt}
\begin{picture}(5,5)
\put(1,0){\line(1,0){3}} %
\put(1,0){\line(0,1){3}} %
\put(1,3){\line(1,0){3}} %
\put(4,0){\line(0,1){3}} %

\newcommand{\mitteA}{\put(2.33,1.5){\bf{A}}}
\newcommand{\mitteB}{\put(2.33,1.5){\bf{B}}}
\newcommand{\mitteC}{\put(2.33,1.5){\bf{C}}}

% \newcommand{\mitte}[1]{\put(2.33,1.5){\bf{#1}}} <--- Geht leider nicht
}{\end{picture}}%

%------ Zweite -----------------------------------------------
\newenvironment{bildzwei}
{\setlength{\unitlength}{1cm} \linethickness{1pt}
\begin{picture}(7,7)
\put(1,0){\line(1,0){5}} %
\put(1,0){\line(0,1){5}} %
\put(1,5){\line(1,0){5}} %
\put(6,0){\line(0,1){5}} %

\newcommand{\mitteA}{\put(3.33,2.5){\bf{A}}}
\newcommand{\mitteB}{\put(3.33,2.5){\bf{B}}}
\newcommand{\mitteC}{\put(3.33,2.5){\bf{C}}}

% \newcommand{\mitte}[1]{\put(2.33,1.5){\bf{#1}}} <--- Geht leider nicht
}{\end{picture}}

%----Start ---------------------------------------------------------------
\begin{document}
\centering

\begin{bildeins}
\mitteA
%\mitteB
%\mitteC

%\mitte{A} <--- Geht leider nicht
\end{bildeins}

\begin{bildzwei}
\mitteA
%\mitteB
%\mitteC

%\mitte{A} <--- Geht leider nicht
\end{bildzwei}
\end{document}

Zoomy
17-06-2007, 15:52
Hmm... Manchmal ist das so, gerade wenn man hier was geschrieben ist, dann kommt einem selbst die Lösung,

Mir ist aufjedenfall wieder selber eine Lösung eingefallen:

\documentclass{scrartcl}
%------ Erste -----------------------------------------------
\newenvironment{bildeins}
{\setlength{\unitlength}{1cm} \linethickness{1pt}
\begin{picture}(5,5)
\put(1,0){\line(1,0){3}} %
\put(1,0){\line(0,1){3}} %
\put(1,3){\line(1,0){3}} %
\put(4,0){\line(0,1){3}} %

\newcommand\xWert{2.33}
\newcommand\yWert{1.5}
}{\end{picture}}%

%------ Zweite -----------------------------------------------
\newenvironment{bildzwei}
{\setlength{\unitlength}{1cm} \linethickness{1pt}
\begin{picture}(7,7)
\put(1,0){\line(1,0){5}} %
\put(1,0){\line(0,1){5}} %
\put(1,5){\line(1,0){5}} %
\put(6,0){\line(0,1){5}} %

\newcommand\xWert{3.3}
\newcommand\yWert{2.5}
}{\end{picture}}

%--- Command -----------------------------------------------------------
\newcommand{\mitte}[1]{\put(\xWert,\yWert){\bf{#1}}}

%---- Start ---------------------------------------------------------------
\begin{document}
\centering

\begin{bildeins}
\mitte{B}
\end{bildeins}

\begin{bildzwei}
\mitte{Z}
\end{bildzwei}
\end{document}
%-----------------------------------------------------------------

Vlt hilft es ja noch jemandem :-)

rais
17-06-2007, 16:02
Moin moin,
das Kommando auslagern ist sicher eine Möglichkeit...
\bf{..} solltest Du Dir noch einmal überlegen:
a) ist \bf veraltet und durch \bfseries abgelöst worden,
b) ist \bf ein Schalter

Falls Du doch mal eine Makrodefinition innerhalb einer Umgebung brauchst:


\documentclass{scrartcl}
\newenvironment{bildeins}
{\setlength{\unitlength}{1cm} \linethickness{1pt}
\begin{picture}(5,5)
\put(1,0){\line(1,0){3}} %
\put(1,0){\line(0,1){3}} %
\put(1,3){\line(1,0){3}} %
\put(4,0){\line(0,1){3}} %
\newcommand{\mitte}[1]{\put(2.33,1.5){\textbf{##1}}}% <--- Geht doch;-)
}{\end{picture}}%

\begin{document}
\centering

\begin{bildeins}
\mitte{A} %<--
\end{bildeins}

\end{document}

MfG,

Zoomy
17-06-2007, 17:52
Die Lösung ist natürlich noch um einiges schöner:)

Danke