diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/langsci/langsci-forest-setup.sty')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/langsci/langsci-forest-setup.sty | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xelatex/langsci/langsci-forest-setup.sty b/Master/texmf-dist/tex/xelatex/langsci/langsci-forest-setup.sty new file mode 100644 index 00000000000..dc7c887bcbd --- /dev/null +++ b/Master/texmf-dist/tex/xelatex/langsci/langsci-forest-setup.sty @@ -0,0 +1,186 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 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}}}{}} +}} |