Anzeige:
Ergebnis 1 bis 4 von 4

Thema: \newcommand[1] in \newenvironment

  1. #1
    Registrierter Benutzer
    Registriert seit
    18.04.2007
    Ort
    Stuttgart
    Beiträge
    64

    \newcommand[1] in \newenvironment

    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}

  2. #2
    Registrierter Benutzer
    Registriert seit
    18.04.2007
    Ort
    Stuttgart
    Beiträge
    64

    Antwort selber gefunden

    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 :-)

  3. #3
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    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:
    Code:
    \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,
    Rainer
    There's nothing a good whack with a hammer won't fix!

  4. #4
    Registrierter Benutzer
    Registriert seit
    18.04.2007
    Ort
    Stuttgart
    Beiträge
    64
    Die Lösung ist natürlich noch um einiges schöner

    Danke

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •