%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% File: langsci-forest-setup.sty %% Author: Language Science Press (http://langsci-press.org) %% Date: 2016-01-16 16:47:43 UTC %% Purpose: This file contains optional styles and settings for the %% forest package. %% Language: LaTeX %% Licence: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % texlive 2015 is broken (in comparison to texlive 2013) % a workaround is to use a different pgf driver. % See email from Akira Kakuto to Stefan Müller 15.01.2016 %deceive the driver \def\pdftexversion{140} %use the old driver for dvipdfm \def\pgfsysdriver{pgfsys-dvipdfm.def} % http://en.wikibooks.org/wiki/LaTeX/Linguistics#Syntactic_trees \usepackage{tikz-dependency} \usetikzlibrary{tikzmark} % saves positions in tikz pictures, allows to connect arbitrary text % http://tex.stackexchange.com/questions/256280/drawing-complex-dependency-diagrams-with-tikz-forest \usetikzlibrary{arrows.meta} \tikzset{deparrow/.style={-Latex}}%,blue}} \usepackage{forest} % does not work %\usepackage[external]{forest}\tikzexternalize\usepackage{morewrites} % specification for all trees \forestset{.style={for tree={parent anchor=south, child anchor=north,align=center,base=top}}} % http://www.texample.net/tikz/examples/borrowers-and-lenders/ \usetikzlibrary{arrows} %,positioning} \tikzset{ %Define standard arrow tip >=stealth'} %% \forestset{ %% sn edges/.style={for tree={parent anchor=south, child anchor=north,align=center,base=bottom,where n children=0{tier=word}{}}}, %% background tree/.style={for tree={text opacity=0.2,draw opacity=0.2,edge={draw opacity=0.2}}} %% } % The following code fixes the size of triangles for examples with translations. The specification % ",delay=with translation" at the leaves is important to make this work. % http://tex.stackexchange.com/questions/167978/smaller-roofs-for-forest/205311#205311 \forestset{ with translation/.style={ l sep=0,inner xsep=0, append translation/.expanded/.wrap pgfmath arg={\gettranslation{##1}}{content}, content/.expanded/.wrap pgfmath arg={\gettext{##1}}{content}, }, append translation/.style={append={[#1,no edge,l=0,inner xsep=0,inner ysep=0,outer ysep=0,before computing xy={l-=2pt}]}} } \def\gettext#1{\gettextA#1;;\endget} \def\gettextA#1;#2;{\removesep#1;} \def\gettranslation#1{\gettranslationA#1;;\endget} \def\gettranslationA#1;#2;{\removesep#2;} \def\removesep#1;#2\endget{#1} % a specific style that specifies the word tier: all nodes that do not have any children % to do: make this style default and change all other figures explicitely as is described here: % http://tex.stackexchange.com/questions/167983/getting-rid-of-a-default-where-specification \forestset{ sn edges/.style={for tree={parent anchor=south, child anchor=north,align=center,base=top}, where n children=0{tier=word,delay=with translation}{} %,delay=with translation }, sn edges without translation/.style={for tree={parent anchor=south, child anchor=north,align=center,base=top}, where n children=0{tier=word}{} }, word tier/.style={where n children=0{tier=word}{} }, % % dependency grammar trees, projective trees only, I guess. St. Mü. 29.09.2014 dg edges/.style={for tree={parent anchor=south, child anchor=north,align=center,base=bottom}, where n children=0{tier=word,edge=dotted,calign with current edge,delay=with translation}{} }, % % Adjunct edges as suggested by Engels, 1977 % http://tex.stackexchange.com/questions/204770/defining-a-special-edge-style-for-connecting-nodes-in-forest/204819#204819 dg adjunct/.style={edge path={\noexpand\path[\forestoption{edge}] (!u.parent anchor)--(.child anchor)-- +(0,#1)\forestoption{edge label};}}, % dg adjunct/.default=6pt, % % for Tesniere-style translations dg transfer/.style={edge path={\noexpand\path[\forestoption{edge}, rounded corners=3pt] % the line downwards (!u.parent anchor)-- +($(0,-l)-(0,4pt)$)-- +($(12pt,-l)-(0,4pt)$) % the horizontal line ($(!p.north west)+(0,l)-(0,20pt)$)--($(.north east)+(0,l)-(0,20pt)$)\forestoption{edge label};},!p.edge'={}}, % for Tesniere-style junctions dg junction/.style={no edge, tikz+={\draw (!p.east)--(!.west) (.east)--(!n.west);} }, % % % % http://tex.stackexchange.com/questions/256280/drawing-complex-dependency-diagrams-with-tikz-forest/256300#256300 % in the tree draw the highest nodes of the inheritance network. For lower nodes insert empty nodes % "[]". These will be filled by the same word and the numbers will be provided with bars according % to remoteness from the word level. % % So cool! Thanks Sašo Živanović % wg/.style={ for tree={ no edge, draw, outer ysep=1pt, }, copy label/.style={ for children={ if content={}{ content/.pgfmath={content("!u")}, calign with current, edge={draw,{-Triangle[open,reversed]}}, copy label, !u.content/.pgfmath={content}, !u.content+=', }{ copy label, } } }, delay={ copy label, for tree={name/.pgfmath={content}}, }, for tree={content format={\strut\forestoption{content}}}, where n children={0}{ tier=word, }{}, }, % % % TAG % http://tex.stackexchange.com/questions/207459/getting-old-school-trees-with-forest % fit -> fit=band causes all nodes to have nothing below them tag/.style={for tree={parent anchor=south, child anchor=north,align=center,base=top,fit=rectangle}, where n children=0{delay=with translation}{}, % the following breaks the alignments in sets begin draw/.code={\begin{tikzpicture}[baseline=(current bounding box.center)]} }, % % like the tag style, but without fit rectangle no word baseline/.style={for tree={parent anchor=south, child anchor=north,align=center,base=top}, where n children=0{delay=with translation}{}}, % % a style that creates an arrow pointing to the substitution node from a tree top node encoded as daughter substitution/.style={edge={<-,dashed},l+=\baselineskip}, % % % typehierarchy/.style={for tree={parent anchor=south, child anchor=north,align=center,base=top,font=\itshape,fit=rectangle}}, % if there are instances as leaves in the hiarchy instance/.style={edge=dotted}, % % auxiliary nodes without node label empty nodes/.style={ delay={where content={}{shape=coordinate,for parent={for children={anchor=north}}}{}}} } % Manual page 52 \forestset{ nice empty nodes/.style={ for tree={calign=fixed edge angles}, delay={where content={}{shape=coordinate,for parent={for children={anchor=north}}}{}} }}