Seite 1 von 2

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

Verfasst: Di 26. Okt 2010, 23:46
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.

Verfasst: Mi 27. Okt 2010, 10:19
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.

Verfasst: Mi 27. Okt 2010, 11:01
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.

Verfasst: Mi 27. Okt 2010, 12:01
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

Verfasst: Mi 27. Okt 2010, 12:37
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.

Verfasst: Mi 27. Okt 2010, 13:36
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

Verfasst: Mi 27. Okt 2010, 14:21
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 :-()

Verfasst: Mi 27. Okt 2010, 14:34
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

Verfasst: Mi 27. Okt 2010, 14:42
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!

Verfasst: Do 28. Okt 2010, 21:14
von phi
Um die ursprüngliche Frage zu beantworten: Paket „environ“.