qtree ausrichten bei Querformat

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: qtree ausrichten bei Querformat

von Achim » Fr 17. Jul 2015, 08:27

Prima, vielen Dank!

Meine Lösung mit vielen Parametern sieht jetzt so aus (falls es nochmal jemanden in Zukunft interessieren sollte):
\newcommand{\savetree}[2]
	% #1: name
	%	#2: tree definition
	{		
		\newsavebox{#1}
		\begin{lrbox}{#1}
		#2
		\end{lrbox}
	}

\newcommand{\outputtree}[7]
	% #1: name
	% #2: landscape or portrait
	% #3: vertical align before
	% #4: vertical align after
	% #5: clear page before: yes/no
	% #6: clear page after: yes/no
	% #7: orient the tree left/right/center
	{
		% clear page before:
		\ifthenelse{\equal{#5}{yes}}{\clearpage}{}
		
		% begin landscape?
		\ifthenelse{\equal{#2}{landscape}}{\begin{landscape}}{}
			% insert some vertical align before the tree
			\vspace*{#3} 			
			% insert tree			
			{
				% this will stop indentation
				\raggedleft
				% insert tree now
				\ifthenelse{\equal{#7}{left}}{\makebox[\linewidth][l]{\smash{{\usebox{#1}}}} }{}
				\ifthenelse{\equal{#7}{right}}{\makebox[\linewidth][r]{\smash{{\usebox{#1}}}} }{}
				\ifthenelse{\equal{#7}{center}}{\makebox[\linewidth][c]{\smash{{\usebox{#1}}}} }{}
			}
			%\makebox[\linewidth][c]{\smash{{\usebox{#1}}}} 
			% insert some vertical align after the tree
			\vspace*{#4}
			% clear page?
			\ifthenelse{\equal{#6}{yes}}{\clearpage}{}
		% end possible landscape
		\ifthenelse{\equal{#2}{landscape}}{\end{landscape}}{}
	}

\savetree{\mytree}{\Tree [.h this that ]}
\outputtree{\mytree}{portrait}{1cm}{1cm}{no}{no}{center}

von Noch so einer » Fr 17. Jul 2015, 07:45

\documentclass[a4paper, 12pt]{article}

\usepackage{array}
\usepackage{fixltx2e}
\usepackage[top=1in, bottom=1in, left=1in, right=1in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{hyperref} 
\usepackage{fancyhdr}      % for nice headers
\usepackage{etoolbox}
\usepackage{setspace}      % line spacing
\usepackage{qtree}         % for tree design
\usepackage{lscape}       % for landscape mode


\makeatletter    % needed because there is an @ symbol in a command
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\makeatother       % reset to normal interpretation

\newcommand{\var}[2]{#1\textsubscript{#2}}
\newcommand{\type}[1]{$<$#1$>$}

% Change the name of the TOC from 'Content' to 'Table of Contents'
\renewcommand{\contentsname}{Table of Contents}

\newcommand{\savetree}[2]
   % #1: name
   %   #2: tree definition
   {
      
      \newsavebox{#1}
      \begin{lrbox}{#1}
      #2
      \end{lrbox}
   }

\newcommand{\outputtree}[1]
   {
      \begin{landscape} 
         \vspace*{-2cm} 
         \raggedleft\makebox[\linewidth][r]{\smash{{\usebox{#1}}}} 
         \clearpage 
      \end{landscape} 
   }

%================================================%

\begin{document}
\pagenumbering{roman}
\thispagestyle{empty}
\doublespacing
\tableofcontents

\onehalfspacing
\newpage
\pagenumbering{arabic} 
\pagestyle{fancy}
\fancyhf{}
\lhead{\nouppercase{\leftmark}}
\rhead{\thepage}

\section{test tree}
\savetree{\thetree}{\Tree [.S This That ] }
\outputtree{\thetree}
\end{document}
Es sei darauf hingewiesen, dass die Anzahl der Box-Register bei TeX beschränkt ist. Man benötigt daher bei altem LaTeX ggf. das Paket etex, falls man viele Boxen speichert und erst später verwendet. Bei LaTeX ab Version 2015/01/01 braucht man das nicht mehr. Außerdem braucht das natürlich auch Speicher. Es kann daher sinnvoll sein, Boxen wieder zu verwenden, wenn sie ausgegeben sind und nicht mehr benötigt werden. Das gibt obige Lösung jedoch nicht her, da hier von \savetree immer eine neue Box angefordert wird (auch wenn eine Box mit demselben Namen bereits existiert). Außerdem gibt es in der Lösung keinen Schutz davor, nicht versehentlich bereits verwendete Namen zu verwenden.

von Achim » Fr 17. Jul 2015, 07:40

Ooops! Where was I thinking! -> Code korrigiert

Leider auch mit richtiger Argumentübergabe noch 101 Fehler :-/

von Besserwisser » Fr 17. Jul 2015, 07:34

Argumente werden nicht mit Komma getrennt, sondern jedes für sich ein geschweifte Klammern gesetzt. Vgl. Anweisungen wie \rule.

von Achim » Fr 17. Jul 2015, 07:30

Ach, eins noch: Wenn ich das jetzt in ein Command packen würde, damit es in Zukunft einfacher ist ...

Zwei Commands, \savetree und \outputtree:
\newcommand{\savetree}[2]
	% #1: name
	%	#2: tree definition
	{
		
		%\newsavebox{\expandafter\newcommand\csname #1}
		\begin{lrbox}{#1}
		#2
		\end{lrbox}
	}
\newcommand{\outputtree}[1]
	{
		\begin{landscape} 
			\vspace*{-2cm} 
			\raggedleft\makebox[\linewidth][r]{\smash{{\usebox{#1}}}} 
			\clearpage 
		\end{landscape} 
	}
Aufruf mit:
\savetree{\mytree}{[\Tree [.h 1 2]]}
\outputtree{\mytree}
Wirft leider lauter Fehler. Ich nehme an, so einfach kann man keine Befehle als Argumente übergeben. Bei TeX-StackExchange hab ich was mit csname gefunden, aber ich verstehe das nicht so ganz. Hab's oben auch mal eingebaut und ausprobiert, aber leider wirkungslos.

Hier mal das Minimalbeispiel:
\documentclass[a4paper, 12pt]{article}

\usepackage{array}
\usepackage{fixltx2e}
\usepackage[top=1in, bottom=1in, left=1in, right=1in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{hyperref} 
\usepackage{fancyhdr}		% for nice headers
\usepackage{etoolbox}
\usepackage{setspace}		% line spacing
\usepackage{qtree}			% for tree design
\usepackage{lscape} 		% for landscape mode


\makeatletter 	% needed because there is an @ symbol in a command
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\makeatother 		% reset to normal interpretation

\newcommand{\var}[2]{#1\textsubscript{#2}}
\newcommand{\type}[1]{$<$#1$>$}

% Change the name of the TOC from 'Content' to 'Table of Contents'
\renewcommand{\contentsname}{Table of Contents}

\newcommand{\savetree}[2]
	% #1: name
	%	#2: tree definition
	{
		
		\newsavebox{\expandafter\newcommand\csname #1}
		\begin{lrbox}{#1}
		#2
		\end{lrbox}
	}

\newcommand{\outputtree}[1]
	{
		\begin{landscape} 
			\vspace*{-2cm} 
			\raggedleft\makebox[\linewidth][r]{\smash{{\usebox{#1}}}} 
			\clearpage 
		\end{landscape} 
	}

%================================================%

\begin{document}
\pagenumbering{roman}
\thispagestyle{empty}
\doublespacing
\tableofcontents

\onehalfspacing
\newpage
\pagenumbering{arabic} 
\pagestyle{fancy}
\fancyhf{}
\lhead{\nouppercase{\leftmark}}
\rhead{\thepage}

\section{test tree}
\savetree{\thetree, [\Tree [.h 1 2]]}
\outputtree{\thetree}
\end{document}

von Achim » Do 16. Jul 2015, 16:24

Wow, super, genau so hatte ich mir das vorgestellt :oops: 8)

Vielen lieben Dank!

von esdd » Do 16. Jul 2015, 16:18

Speichere den Baum in einer Box und nutze diese dann und verstecke dabei deren Höhe. Außerdem brauchst Du für die Linksverschiebung noch \vspace*{...}.
\documentclass[a4paper, 12pt]{article}

\usepackage{array}
%\usepackage{fixltx2e}
\usepackage[top=1in, bottom=1in, left=1in, right=1in,headheight=15pt]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{hyperref} 
\usepackage{fancyhdr}      % for nice headers
\usepackage{etoolbox}
\usepackage{setspace}      % line spacing
\usepackage{qtree}         % for tree design
\usepackage{lscape}       % for landscape mode


\makeatletter    % needed because there is an @ symbol in a command
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\makeatother       % reset to normal interpretation

\newcommand{\var}[2]{#1\textsubscript{#2}}
\newcommand{\type}[1]{$<$#1$>$}

% Change the name of the TOC from 'Content' to 'Table of Contents'
\renewcommand{\contentsname}{Table of Contents}

%================================================%

\begin{document}
\pagenumbering{roman}
\thispagestyle{empty}
\doublespacing
\tableofcontents

\onehalfspacing
\newpage
\pagenumbering{arabic} 
\pagestyle{fancy}
\fancyhf{}
\lhead{\nouppercase{\leftmark}}
\rhead{\thepage}

\section{Tree Size}

Wie bekomme ich den Tree besser links ausgerichtet, sodass das "would" auf der linken Seite besser nach unten abschließt und "the cake" oben nicht im Header drinsteckt? :-/
\\
\\
\noindent Außerdem verschiebt es mir den Header leider mit, wenn man die geometry ändert.
\\
\\
\noindent \textit{In essence}, wie kann ich den Tree horizontal und vertical mittig ausrichten, bzw. so weit unten wie möglich? (z.B. 1cm vom unteren Rand entfernt)

\newsavebox\qtreetabelle
\begin{lrbox}{\qtreetabelle}
\Tree [.\textsubscript{$<$st$>$} 
             $\lambda$w\textsubscript{0} 
             [.\textsubscript{$<$t$>$} 
                [.\textsubscript{$<$st,t$>$} 
                   would\textsubscript{$<$st,$<$st,t$>$$>$} 
                   [.\textsubscript{$<$st$>$} 
                      [.\textsubscript{$<$st,st$>$} 
                         Sim\textsubscript{$<$s,$<$st,st$>$$>$} 
                         w_0\textsubscript{$<$s$>$} 
                      ] 
                      [.\textsubscript{$<$st$>$} 
                         [.\textsubscript{$<$st$>$} 
                            $R$\textsubscript{$<$s,st$>$} 
                            w_0\textsubscript{$<$s$>$} 
                         ] 
                         [.\textsubscript{$<$st$>$} 
                            $\lambda$w_2 
                            [.S\textsubscript{$<$t$>$} 
                               [.\textsubscript{$<$e$>$} 
                                  w_2\textsubscript{$<$s$>$} 
                                  [.\textsubscript{\type{s,e}} 
                                     \var{f}{\type{e,\type{s,e}}} 
                                     \var{I}{\type{e}} 
                                  ] 
                               ] 
                               [.\textsubscript{$<$et$>$} 
                                  be\textsubscript{$<$e,$<$et$>$$>$} 
                                  [.\textsubscript{$<$e$>$} 
                                     w_2\textsubscript{$<$s$>$} 
                                     [.\textsubscript{\type{s,e}} 
                                        \var{f}{\type{e,\type{s,e}}} 
                                        \var{you}{\type{e}} 
                                     ] 
                                  ]  !\qsetw{3cm} 
                               ] 
                            ] !\qsetw{5cm} 
                         ] 
                      ] 
                   ] !\qsetw{7cm} 
                ] !\qsetw{15cm} 
                [.\textsubscript{$<$st$>$} 
                   $\lambda$w_7 
                   [.S\textsubscript{$<$t$>$} 
                      [.\textsubscript{$<$e$>$} 
                         w_7\textsubscript{$<$s$>$} 
                         [.\textsubscript{\type{s,e}} 
                            \var{f}{\type{e,\type{s,e}}} 
                            \var{I}{\type{e}} 
                         ] 
                      ] 
                      [.\textsubscript{$<$et$>$} 
                         [.\textsubscript{$<$e,et$>$} 
                            buy\textsubscript{$<$s,$<$e,et$>$$>$} 
                            w_7\textsubscript{$<$s$>$} 
                         ] 
                         \qroof{the cake}.DP\textsubscript{$<$e$>$} 
                      ] 
                   ] 
                ] !\qsetw{10cm} 
             ] !\qsetw{5cm} 
          ]
\end{lrbox}
\begin{landscape}
\vspace*{-2cm}
\raggedleft\makebox[\linewidth][r]{\smash{{\usebox\qtreetabelle}}}
\clearpage
\end{landscape} 
\end{document}
Gruß
Elke

von Achim » Do 16. Jul 2015, 15:45

Danke für den Tipp! Das funktioniert prima mit der Ausrichtung nach oben/unten.

Ich hab jetzt noch ein bisschen versucht, mit dem Rand nach links zu spielen, aber weder \vspace{} oder \setlength{parindent}{-10cm} oder so haben was geholfen bzw. überhaupt etwas gemacht :-/

Hast du da nicht noch eine Idee? Das wäre so super :-)

[edit]Komischerweise wird jetzt eine leere Seite vor dem Baum eingeblendet :-/
\documentclass[a4paper, 12pt]{article}

\usepackage{array}
\usepackage{fixltx2e}
\usepackage[top=1in, bottom=1in, left=1in, right=1in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{hyperref} 
\usepackage{fancyhdr}		% for nice headers
\usepackage{etoolbox}
\usepackage{setspace}		% line spacing
\usepackage{qtree}			% for tree design
\usepackage{lscape} 		% for landscape mode


\makeatletter 	% needed because there is an @ symbol in a command
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\makeatother 		% reset to normal interpretation

\newcommand{\var}[2]{#1\textsubscript{#2}}
\newcommand{\type}[1]{$<$#1$>$}

% Change the name of the TOC from 'Content' to 'Table of Contents'
\renewcommand{\contentsname}{Table of Contents}

%================================================%

\begin{document}
\pagenumbering{roman}
\thispagestyle{empty}
\doublespacing
\tableofcontents

\onehalfspacing
\newpage
\pagenumbering{arabic} 
\pagestyle{fancy}
\fancyhf{}
\lhead{\nouppercase{\leftmark}}
\rhead{\thepage}

\section{Tree Size}

Wie bekomme ich den Tree besser links ausgerichtet, sodass das "would" auf der linken Seite besser nach unten abschließt und "the cake" oben nicht im Header drinsteckt? :-/
\\
\\
\noindent Außerdem verschiebt es mir den Header leider mit, wenn man die geometry ändert.
\\
\\
\noindent \textit{In essence}, wie kann ich den Tree horizontal und vertical mittig ausrichten, bzw. so weit unten wie möglich? (z.B. 1cm vom unteren Rand entfernt)

\begin{landscape}		
\hspace*{6cm}
\Tree [.\textsubscript{$<$st$>$}
				$\lambda$w\textsubscript{0}
				[.\textsubscript{$<$t$>$}
					[.\textsubscript{$<$st,t$>$}
						would\textsubscript{$<$st,$<$st,t$>$$>$}
						[.\textsubscript{$<$st$>$}
							[.\textsubscript{$<$st,st$>$}
								Sim\textsubscript{$<$s,$<$st,st$>$$>$}
								w_0\textsubscript{$<$s$>$}
							]
							[.\textsubscript{$<$st$>$}
								[.\textsubscript{$<$st$>$}
									$R$\textsubscript{$<$s,st$>$}
									w_0\textsubscript{$<$s$>$}
								]
								[.\textsubscript{$<$st$>$}
									$\lambda$w_2
									[.S\textsubscript{$<$t$>$}
										[.\textsubscript{$<$e$>$}
											w_2\textsubscript{$<$s$>$}
											[.\textsubscript{\type{s,e}}
												\var{f}{\type{e,\type{s,e}}}
												\var{I}{\type{e}} 
											]
										]
										[.\textsubscript{$<$et$>$}
											be\textsubscript{$<$e,$<$et$>$$>$}
											[.\textsubscript{$<$e$>$}
												w_2\textsubscript{$<$s$>$}
												[.\textsubscript{\type{s,e}}
													\var{f}{\type{e,\type{s,e}}}
													\var{you}{\type{e}}
												]
											]  !\qsetw{3cm}
										]
									] !\qsetw{5cm}
								]
							]
						] !\qsetw{7cm}
					] !\qsetw{15cm}
					[.\textsubscript{$<$st$>$}
						$\lambda$w_7
						[.S\textsubscript{$<$t$>$}
							[.\textsubscript{$<$e$>$}
								w_7\textsubscript{$<$s$>$}
								[.\textsubscript{\type{s,e}}
									\var{f}{\type{e,\type{s,e}}}
									\var{I}{\type{e}}
								]
							]
							[.\textsubscript{$<$et$>$}
								[.\textsubscript{$<$e,et$>$}
									buy\textsubscript{$<$s,$<$e,et$>$$>$}
									w_7\textsubscript{$<$s$>$}
								]
								\qroof{the cake}.DP\textsubscript{$<$e$>$}
							]
						] 
					] !\qsetw{10cm}
				] !\qsetw{5cm}
			]
\end{landscape}

\end{document}

von esdd » Do 16. Jul 2015, 15:19

Setze den Code immer in die Code Tags, dann kann man auf "Öffne in Online-Editor" klicken. Dann ist das Anhängen des Codes in aller Regel überflüssig und auch das Ergebnis braucht es eigentlich nicht.

Du kannst vor dem \Tree zum einen \noindent einfügen und zum anderen kannst Du ihn noch manuell mit \hspace*{-2cm} etwas verschieben. Den Wert musst Du natürlich anpassen. Eventuell empfiehlt sich außerdem ein \thispagestyle{empty}, da sich Baum und Kopfzeile auch dann optisch stören, wenn sie nicht ineinander hinein ragen.

Gruß
Elke

qtree ausrichten bei Querformat

von Achim » Do 16. Jul 2015, 13:48

Hallihallo,

noch eine Frage zum Seitenlayout: Ich habe mit dem Package qtree einen Syntaxbaum gezeichnet. Der ist ziemlich breit, deshalb muss ich die Seite auf landscape stellen. Leider ist der Baum dann zu hoch, weswegen ich gerne den Rand links verschmälern würde.

Ich hab das dann mit \newgeometry{left=1cm} ausprobiert. Das sieht halbwegs gut aus, aber leider ist a) der Baum nicht mehr linksbündig ausgerichtet (falls er das jemals war?), und der rechte/obere Teil des Baumes ragt in den Header mit rein. Ich hab schon mit \raggedright versucht, den Baum irgendwie nach links zu bekommen, aber das hat gar nichts gemacht.

Wie immer vielen Dank! Ihr rettet mich gerade echt!

(PS: Mache ich das eigentlich richtig, den LaTeX Code unten immer noch in code-tags anzuhängen, oder soll ich das lieber weglassen und nur das Minimalbeispiel anhängen?)
\documentclass[a4paper, 12pt]{article}

\usepackage{array}
\usepackage{fixltx2e}
\usepackage[top=1in, bottom=1in, left=1in, right=1in]{geometry}
\usepackage[utf8]{inputenc}
\usepackage{hyperref} 
\usepackage{fancyhdr}		% for nice headers
\usepackage{etoolbox}
\usepackage{setspace}		% line spacing
\usepackage{qtree}			% for tree design
\usepackage{lscape} 		% for landscape mode


\makeatletter 	% needed because there is an @ symbol in a command
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
\makeatother 		% reset to normal interpretation

\newcommand{\var}[2]{#1\textsubscript{#2}}
\newcommand{\type}[1]{$<$#1$>$}

% Change the name of the TOC from 'Content' to 'Table of Contents'
\renewcommand{\contentsname}{Table of Contents}

%================================================%

\begin{document}
\pagenumbering{roman}
\thispagestyle{empty}
\doublespacing
\tableofcontents

\onehalfspacing
\newpage
\pagenumbering{arabic} 
\pagestyle{fancy}
\fancyhf{}
\lhead{\nouppercase{\leftmark}}
\rhead{\thepage}

\section{Tree Size}

Wie bekomme ich den Tree besser links ausgerichtet, sodass das "would" auf der linken Seite besser nach unten abschließt und "the cake" oben nicht im Header drinsteckt? :-/
\\
\\
\noindent Außerdem verschiebt es mir den Header leider mit, wenn man die geometry ändert.
\\
\\
\noindent \textit{In essence}, wie kann ich den Tree horizontal und vertical mittig ausrichten, bzw. so weit unten wie möglich? (z.B. 1cm vom unteren Rand entfernt)

\begin{landscape}
\newgeometry{left=1cm}			
\Tree [.\textsubscript{$<$st$>$}
				$\lambda$w\textsubscript{0}
				[.\textsubscript{$<$t$>$}
					[.\textsubscript{$<$st,t$>$}
						would\textsubscript{$<$st,$<$st,t$>$$>$}
						[.\textsubscript{$<$st$>$}
							[.\textsubscript{$<$st,st$>$}
								Sim\textsubscript{$<$s,$<$st,st$>$$>$}
								w_0\textsubscript{$<$s$>$}
							]
							[.\textsubscript{$<$st$>$}
								[.\textsubscript{$<$st$>$}
									$R$\textsubscript{$<$s,st$>$}
									w_0\textsubscript{$<$s$>$}
								]
								[.\textsubscript{$<$st$>$}
									$\lambda$w_2
									[.S\textsubscript{$<$t$>$}
										[.\textsubscript{$<$e$>$}
											w_2\textsubscript{$<$s$>$}
											[.\textsubscript{\type{s,e}}
												\var{f}{\type{e,\type{s,e}}}
												\var{I}{\type{e}} 
											]
										]
										[.\textsubscript{$<$et$>$}
											be\textsubscript{$<$e,$<$et$>$$>$}
											[.\textsubscript{$<$e$>$}
												w_2\textsubscript{$<$s$>$}
												[.\textsubscript{\type{s,e}}
													\var{f}{\type{e,\type{s,e}}}
													\var{you}{\type{e}}
												]
											]  !\qsetw{3cm}
										]
									] !\qsetw{5cm}
								]
							]
						] !\qsetw{7cm}
					] !\qsetw{15cm}
					[.\textsubscript{$<$st$>$}
						$\lambda$w_7
						[.S\textsubscript{$<$t$>$}
							[.\textsubscript{$<$e$>$}
								w_7\textsubscript{$<$s$>$}
								[.\textsubscript{\type{s,e}}
									\var{f}{\type{e,\type{s,e}}}
									\var{I}{\type{e}}
								]
							]
							[.\textsubscript{$<$et$>$}
								[.\textsubscript{$<$e,et$>$}
									buy\textsubscript{$<$s,$<$e,et$>$$>$}
									w_7\textsubscript{$<$s$>$}
								]
								\qroof{the cake}.DP\textsubscript{$<$e$>$}
							]
						] 
					] !\qsetw{10cm}
				] !\qsetw{5cm}
			]
\end{landscape}

\end{document}
Dateianhänge
Problem als TeX
(3.36 KiB) 353-mal heruntergeladen
Problem als PDF
(63.62 KiB) 300-mal heruntergeladen

Nach oben