diff -r 07d59c14c712 -r b5c5ecd64f6a exercises/solutions/tikz-qtree-compat.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/exercises/solutions/tikz-qtree-compat.sty Fri May 18 22:37:44 2012 +0200 @@ -0,0 +1,72 @@ +% tikz-qtree-compat.tex +% Version 1.1, 25 Dec 2009 + +\RequirePackage{tikz-qtree} + +\let\orig@Tree\Tree +\def\Tree{\automath \qtreeprimes@internal \orig@Tree} + +\def\qsetw#1{\message{\noexpand\qsetw is not supported, sorry!}} +\def\faketreewidth#1{\message{\noexpand\faketreewidth is not supported, sorry!}} +\def\qbalance{\message{\noexpand\qbalance is not supported, sorry!}} +\def\qframesubtree{\message{\noexpand\qframesubtree is not supported, sorry!}} + +% Implement \qroof as a fancy leaf node +\newtoks\@qrooflabel + +\def\qroof#1.{% +\begin{tikzpicture}[baseline] +{\pgftransformshift{\pgftree@levelshift}% +\node(qroofbot){#1};} +\@qroof +} +\def\@qroof{\@ifnextchar\egroup{% +% since we are putting the qroof inside a node, we already have an inner sep +% so for the purposes of defining our bounding box, we must eliminate inner sep +\begin{pgfsubpicture} +\node [inner sep=0pt] {\the\@qrooflabel};% +\end{pgfsubpicture} +\pgfpathrectanglecorners{\pgfpoint{\the\pgf@subpicminx}{\the\pgf@subpicminy}}{\pgfpoint{\the\pgf@subpicmaxx}{\the\pgf@subpicmaxy}}% +\pgfusepath{use as bounding box}% +\node (qrooftop) {\the\@qrooflabel}; +\draw \roof@edge{qrooftop}{qroofbot};% +\end{tikzpicture}} +{\@@qroof}} +\def\@@qroof#1{\expandafter\@qrooflabel\expandafter{\the\@qrooflabel #1}\@qroof} + +%%% This is lifted straight from qtree.sty + +% and another odd convenience: +% +% Make _, ^ go into math mode automatically in the scope of \automath +% +{ % Temporarily change catcodes +\catcode`\_=\active +\catcode`\^=\active + + \global\def\automath{% + \catcode`\_=\active + \catcode`\^=\active + \def_##1{\@ifnextchar^{\automath@two_{##1}}{\ensuremath{\sb{##1}}}}% + \def^##1{\@ifnextchar_{\automath@two^{##1}}{\ensuremath{\sp{##1}}}}} +} +\def\automath@two#1#2#3#4{\ensuremath{#1{#2}\relax #3{#4}}} +% Restore default catcodes for ^, _ +\def\noautomath{\catcode`\_=8 \catcode`\^=7 } + + +% Let \0, \1, \2 produce ^0, $'$, $''$ +% The \rlap results in better centering of the label (ignoring the +% superscript) +\def\qtreeprimes@internal{% + \def\0{\ifmmode ^0\else \rlap{$^0$}\fi}% + \def\1{\ifmmode '\else \rlap{$'$}\fi}% + \def\2{\ifmmode ''\else \rlap{$''$}\fi}% +} + +% Same commands, but without the \rlap feature +\def\qtreeprimes{% + \def\0{\ensuremath{^0}}% + \def\1{\ensuremath{'}}% + \def\2{\ensuremath{''}}} +