\Befehl{---} als \begin{Befehl} --- \end{Befehl}

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


tobi7212
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Di 24. Aug 2010, 11:43

\Befehl{---} als \begin{Befehl} --- \end{Befehl}

Beitrag von tobi7212 »

Hallo, ich habe da eine scheinbar unsinnige Frage:
Wie kann ich aus einem Latex-Command ein environment machen, also:
\Befehl{---} als \begin{Befehl} --- \end{Befehl} schreiben?
Zuerst Klammer auf und für end{Befehl} dann Klammer zu geht ja irgendwie nicht, da komm ich ja selbst schon durcheinander :-) Ich müsste irgendwie sagen, dass "\textsf{" zu ersetzen ist und nicht "\textsf{}" gemeint ist, was da ja leider so steht.
27.10.10
code entfernt, da irreführend
Mein eigentliches Ziel ist es mir für Lyx Absatztypen zu definieren, welche geschachtelt werden können, wozu nur die environment-Methode in Frage kommt. Realisieren möchte ich folgendes:
\documentclass[a4paper]{scrartcl}
\usepackage{tikz} 

\begin{document}

\begin{tikzpicture}

\node {Oberster Punkt}
  child {node {links}}
  child {node {rechts}
  	child {node {unterpunkt}}
  }  
;\end{tikzpicture}

\end{document}
Wie man sieht, muss dazu child{} geschachtelt werden können.
Außerdem muss das Semikolon bei ";\end{tikzpicture}" noch in eine neu zu definierende Umgebung in die Ende-Definition integriert werden.
Ist das alles hin zu bekommen? Das muss doch möglich sein dem Kompiler zu verklickern, dass die definierten Textersetzungen vorzunehmen sind?!
Zu hoffen, dass ihr mich jetzt nicht für blöd erklärt :-( Schon klar, normalerweise ist das wohl ein höchst unsinniger Wunsch.
Zuletzt geändert von tobi7212 am Mi 27. Okt 2010, 14:12, insgesamt 1-mal geändert.

Nerd 032F

Beitrag von Nerd 032F »

Davon abgesehen, dass ich absolut nicht verstanden habe, warum Du eine Umgebung brauchst, schließlich kann man auch Anweisungen innerhalb des Arguments einer Anweisung verwenden, sei darauf hingewiesen, dass es neben den \text...-Befehlen mir Argument auch eine Reihe von Schriftumschaltbefehlen wie \sffamily gibt. Die sollten in jeder vollständigen LaTeX-Einführung zu finden sein. Die primäre Doku ist im fntguide, der Bestandteil jeder vollständigen LaTeX-Distribution ist.

tobi7212
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Di 24. Aug 2010, 11:43

Beitrag von tobi7212 »

Hallo Nerd 032F,
danke für die Antwort, aber vermutlich hast Du nur den ersten Teil meiner Frage gelesen, welcher nur als Einführung in meine Problematik gedacht war, auf welche Du leider in überhaupt nicht eingegangen bist.
Damit ist meine Frage noch vollkommen offen und ich bin für jede weitere Anregung dankbar.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hallo,

leider bin ich mir nicht sicher, was Du eigentlich machen willst und verstehe auch nicht, wozu Du eine neue Umgebung brauchst. Aber vielleicht hilft Dir das ein wenig weiter:
\documentclass[parskip=half]{scrartcl} 
\usepackage[ngerman]{babel}
\usepackage{blindtext}

\usepackage{tikz} 

\newcommand\AndereSchrift{\sffamily\slshape}

\begin{document}
\blindtext

\AndereSchrift
   \blindtext
\normalfont

\blindtext

\begin{tikzpicture}
	\AndereSchrift 
	\node{Oberster Punkt} 
	  child {node {links}} 
	  child {node {rechts} 
	     child {node {unterpunkt}} 
	  };
\end{tikzpicture} 

\blindtext

Du kannst auch die Schriften fuer einzelne Noden umschalten:

\begin{tikzpicture}
	\node{Oberster Punkt} 
	  child {node {links}} 
	  child {node {\AndereSchrift rechts} 
	     child {node {unterpunkt}} 
	  };
\end{tikzpicture}

\end{document}
Gruß
Elke

tobi7212
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Di 24. Aug 2010, 11:43

Beitrag von tobi7212 »

OKOK, ich versuch mir mal mehr Mühe zu geben.
Was ich eigentlich haben will ist folgendes (als Ersatz für das zweites Minimalbeispiel in der Eröffnungsfrage):
\documentclass[a4paper]{scrartcl}
\usepackage{tikz} 

\newenvironment{tikzpictureNEU}
{\begin{tikzpicture}}
{;\end{tikzpicture}}  %Das hier funktioniert mit dem Semikolon!

\newenvironment{childNEU}
{ child{   }
{       }  } %Das hier funktioniert nicht mit den Klammern!

\begin{document}

\begin{tikzpictureNEU}
	\node {Oberster Punkt}
	  \begin{childNEU} 
	  		node{links} 
	  \end{childNEU}
	  \begin{childNEU}
	  	  node {rechts}
	  	  \begin{childNEU}
	  			 node {unterpunkt}
	  	  \end{childNEU}
	  \end{childNEU}  
\end{tikzpictureNEU}

\end{document}
Also den \Befehl{---} als \begin{Befehl} --- \end{Befehl} zu schreiben, was ich irreführenderweise an dem Textformatbefehl verdeutlichen wollte.

Also wie kann ich
\newenvironment{childNEU}
{ child{   }
{       }  } %Das hier funktioniert nicht mit den Klammern!
realisieren???? ich habe es schon so probiert:
\newenvironment{childNEU}
{ [child{]   }
{    [}]      } %Das hier funktioniert nicht mit den Klammern!
und so:
\newenvironment{childNEU}
{ child\{   }
{       \}  } %Das hier funktioniert nicht mit den Klammern!
aber das rumgerate bringt mich ja nicht weiter. Bitte helft mir.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hallo,

es liegt nicht nur an den Klammern. Meines Wissens nach ist die Verwendung irgendwelcher Befehle oder Umgebungen in einem tikz tree außerhalb der Nodentexte überhaupt nicht vorgesehen.
\documentclass[parskip=half]{scrartcl} 
\usepackage[ngerman]{babel}
\usepackage{blindtext}

\usepackage{tikz} 

\newenvironment{AndereSchrift}{\sffamily\slshape}{\normalfont}
\newcommand\nichts{}

\begin{document}
\blindtext

\begin{AndereSchrift}
	\blindtext
\end{AndereSchrift}

\blindtext

Du kannst den gesamten Baum in eine Umgebung setzen:

\begin{tikzpicture}
	\begin{AndereSchrift}
		\node{Oberster Punkt} 
		  child {node {links}} 
		  child {node {rechts} 
		     child {node {unterpunkt}} 
		  };
	\end{AndereSchrift}
\end{tikzpicture} 

\blindtext

Du kannst auch die Umgebung innerhalb der einzelnen Noden verwenden:

\begin{tikzpicture}
	\node{Oberster Punkt} 
	  child {node {links}} 
	  child {node {\begin{AndereSchrift}rechts\end{AndereSchrift}}
	     child {node {unterpunkt}} 
	  };
\end{tikzpicture}

%Aber folgendes funktioniert nicht:
%
%\begin{tikzpicture}
%	\node{Oberster Punkt} 
%	  child {node {links}}\nichts%
%	  child {node {rechts}
%	     child {node {unterpunkt}} 
%	  };
%\end{tikzpicture} 
%
%\begin{tikzpicture}
%	\node{Oberster Punkt} 
%  \begin{AndereSchrift}
%	  child {node {links}} 
%  \end{AndereSchrift}
%  	child {node {rechts}
%     child {node {unterpunkt}} 
%	  };
%\end{tikzpicture}  
\end{document} 
Ich verstehe auch immer noch nicht, warum Du das überhaupt tun willst.

Gruß
Elke

tobi7212
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Di 24. Aug 2010, 11:43

Beitrag von tobi7212 »

Ich möchte den Befehl
child{--irgendwelcher Code--}
in eine (neue) Umgebung umdefinieren:
\begin{childNEU}
--irgendwelcher Code--
\end{childNEU}
(Das Beispiel mit der Textformatierung hatte ich nur genommen, weil es jeder kennt, hat aber MIT DER SACHE ÜBERHAUPT NICHTS ZU TUN ich dachte es wird dann einfacht, war aber nur irreführend leider :-()

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hallo,

was Du willst, habe ich schon verstanden.

Ich habe Dir nur versucht zu sagen, dass Du in Deinem tikz tree zwischen oder statt der childs kein \begin{irgendeine Umgebung} und kein \end{irgendeine Umgebung} verwenden kannst. Genauso wie Du zwischen die childs keinen Befehl mogeln kannst - selbst wenn der leer ist. Damit bringst Du die Syntax von tikz durcheinander.

Gruß
Elke

tobi7212
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Di 24. Aug 2010, 11:43

Beitrag von tobi7212 »

OK, ich wollt ja auch nichts dazwischen mogeln, ich wollte ja nur die Syntax bei der Eingabe ändern, sodass identisch das Selbe wieder heraus kommt beim Kompilieren!

phi
Moderator
Moderator
Beiträge: 420
Registriert: Fr 6. Feb 2009, 21:28

Beitrag von phi »

Um die ursprüngliche Frage zu beantworten: Paket „environ“.

Gesperrt