%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%      File: langsci-optional.sty
%%    Author: Language Science Press (http://langsci-press.org)
%%      Date: 2016-01-16 16:47:43 UTC 
%%   Purpose: This file contains useful, but not essential, 
%%            macros for books using langscibook.cls
%%  Language: LaTeX
%%   Licence: 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



% Heiko Oberdiek
% http://tex.stackexchange.com/questions/136644/vertical-space-in-interaction-with-figure-center-environment
\newcommand{\oneline}[1]{%
  \begingroup
    \sbox0{\ignorespaces#1\unskip}%
    \leavevmode
    \ifdim\wd0>\linewidth
      \hbox to\linewidth{%
        \hss\resizebox{\linewidth}{!}{\copy0 }\hss
      }%
    \else
      \copy0 %
    \fi
  \endgroup
}

\newcommand{\centerfit}[1]{%
  \begingroup
    \sbox0{\ignorespaces#1\unskip}%
    \leavevmode
    \ifdim\wd0>\linewidth
      \hbox to\linewidth{%
        \hss\resizebox{\linewidth}{!}{\copy0 }\hss
      }%
    \else
      \centerline{\copy0 }%
    \fi
  \endgroup
}

% Helps to fit verbatim onto one line:
% http://tex.stackexchange.com/questions/140593/shrinking-verbatim-text/
\usepackage{fancyvrb}
\newenvironment{fitverb}
 {\SaveVerbatim{rlwv}}
 {\endSaveVerbatim
  \sbox0{\BUseVerbatim{rlwv}}
  \begingroup\center % don't add indentation
  \ifdim\wd0>\linewidth
    \resizebox{\linewidth}{!}{\copy0}%
  \else
    \copy0
  \fi
  \endcenter\endgroup}

\VerbatimFootnotes


% http://tex.stackexchange.com/questions/73464/inserting-rtl-text-in-verbatim-environment?rq=1
% verbatim with RTL text

%\DefineVerbatimEnvironment{rtlverbatim}{Verbatim}{commandchars=+\[\]}


\newcommand{\ispackage}[1]{\if@noftnote%
\is{package!{\scshape #1}}%
\else%
\is{package!{\scshape #1}|fn{*}}%
\fi%
}

% breaks the index
%\usepackage{doc}


\newcommand{\ispackageb}[1]{
\is{package!\texttt{#1}|(}
}
\newcommand{\ispackagee}[1]{
\is{package!\texttt{#1}|)}
}

\newcommand{\isoption}[1]{\if@noftnote%
\is{option!\texttt{#1}}%
\else%
\is{option!\texttt{#1}|fn{*}}%
\fi%
}

\newcommand{\iscommand}[1]{\if@noftnote%
\index{#1@{\ttfamily $\backslash$#1}}%
\else%
\is{{#1@\ttfamily $\backslash$#1}|fn{*}}%
\fi%
}


\newcommand\displaycmd[2]{%
  \DescribeMacro{#2}\centerline{\cmd{#1}}}
  
% \mex considered evil, as we need explicit reference to examples in XML
% % The following allows for a quick reference to following or preceeding examples (\mex{1}) or
% % (\mex{0}) but also (\mex{-1})
% % taken from covington.sty (check)
% \newcounter{lsptempcnt}
% 
% \newcommand{\mex}[1]{\setcounter{lsptempcnt}{\value{equation}}%
% \addtocounter{lsptempcnt}{#1}%
% \arabic{lsptempcnt}}%

\newcommand{\fitpagewidth}[1]{
  \resizebox{\textwidth}{!}{#1}
}



%add intonation bars over morphemes or words
\newcommand{\intline}[2]{\settowidth{\LSPTmp}{#2}\raisebox{#1pt}{\parbox{.1mm}{\rule{\LSPTmp}{.5pt}}}#2}

%add rising or falling intonation
\newcommand{\dline}[3]{%
  \parbox{.1mm}{\begin{picture}(0,0)%
        \put(0,#1){\line(#2,-1){#3}}%
        \end{picture}%
  }%
}

%% rotated table headers
% create lengths
\newlength{\rotheight}
\newlength{\rotwidth}

\newcommand{\rotatehead}[2][1cm]{
%width is the width of the parbox
%height is the buffer space used to vertically stretch the headere
\setlength{\rotwidth}{#1}
\setlength{\rotheight}{.85\rotwidth}
  \begin{rotate}{33}~ %nbsp shifts the content away from the line underneath
   \parbox{\rotwidth}{\raggedright #2}   
  \end{rotate}%
  \rule{0pt}{\rotheight} %add zero width rule to get the right table height
}

% example metadata

\newcommand{\langinfo}[3]{{\upshape #1\il{#1}~(%
\ifx\\#2\\%
\else%
#2;
\fi%
#3)}\nopagebreak[4]\ignorespaces}

 
\newcommand{\fittable}[1]{\resizebox{\textwidth}{!}{#1}}


% integrate see also in multiple indexes
\def\igobble#1 {} 
\newcommand{\langsciseealso}{\par\addvspace{.1\baselineskip}\hspace*{1.4cm}\hangindent=1.4cm\seealso}
\newcommand{\ilsa}[2]{\il{#1@\igobble | langsciseealso{#2}}}
\newcommand{\issa}[2]{\is{#1@\igobble | langsciseealso{#2}}}
\newcommand{\iasa}[2]{\ia{#1@\igobble | langsciseealso{#2}}}

\usepackage{tabularx}
\usepackage{array}
\newenvironment{widetabular}[1][1]
  {\tabularx{#1\textwidth}}
  {\endtabularx}


\newcommand{\citetv}[1]{\citeauthor{#1} (\citeyear*{#1} [this volume])}
\newcommand{\citepv}[1]{(\citealt{#1} [this volume])}


% Vowel chart tikz commands
\newcommand{\aeiou}{%
	\node at (1.5,0) (a) {a};
	\node at (0,3) (i) {i};
	\node at (3,3) (u) {u};
	\node at (0.5,1.5) (e) {e};
	\node at (2.5,1.5) (o) {o};
}
\newcommand{\aeiouEO}{%
	\node at (1.5,0) (a) {a};
	\node at (0,3) (i) {i};
	\node at (3,3) (u) {u};
	\node at (0.25,2) (e) {e};
	\node at (2.75,2) (o) {o};
	\node at (0.75,1) (E) {ε};
	\node at (2.25,1) (O) {ɔ};	
}

%no hyphenation left alingned
\newcolumntype{Q}{>{\raggedright\arraybackslash}X}
%no hyphenation right aligned
\newcolumntype{S}{>{\raggedleft\arraybackslash}X}
%no hyphenation centered
\newcolumntype{C}{>{\centering\arraybackslash}X}
%no hyphenation fixed width
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
%no hyphenation centered fixed width
\newcolumntype{Z}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
%no hyphenation right aligned fixed width
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\newcolumntype{d}[1]{D{.}{.}{#1}} 
\newcommand{\xxref}[2]{(\ref{#1}--\ref{#2})}


% Underlining in gb4e-example Environments. Usual underlining commands that span multiple words do not work, because gb4e would parse it as one word. 
% Example: \underline{My example phrase} should become \ulp{My}{~~~~~} \ulp{example}{~~~~~} \ule{phrase}
% Note: The 2nd Argument of the \ulp command is filled in by experience - if you are not familiar with the command, you should experiment a bit. Usually, five tildes are enough, but be sure to check the outcome. 
% \ule is meant to be the last word in a phrase that is underlined. Therefore, \ule does not have an extra length.
\usepackage[normalem]{ulem} 
\newcommand{\ulp}[2]{%#1: stuff to underline, #2: extra length to skip the whitespace between to components
  \settowidth{\LSPTmp}{#1}%
  % several boxes are need to assure that words with ascending and descending letters are underlined at the same 
  % level, leading to the impression of a continuous stroke
  \parbox[t]{\LSPTmp}{ %restrict first box to the length of first argument
      \settowidth{\LSPTmp}{#1#2} %inner box is larger than outerbox, so underlining will extend beyond length of outer box
      %             align parbox to bottom
      %              |           mbox to prevent hyphenation
      \uline{\parbox[b]{\LSPTmp}{\mbox{#1#2}}}
    }
}

\newcommand{\ule}[1]{%#1: stuff to underline, no extra length
  \ulp{#1}{}
  }
  
  

\usepackage{newfile}  
\newoutputstream{colorfigures}
\openoutputfile{\jobname.clr}{colorfigures}
\addtostream{colorfigures}{Note the offset incurred by the frontmatter!}
\newenvironment{colorfigure}{\begin{figure}\addtostream{colorfigures}{\thepage}}{\end{figure}} 

\AtEndDocument{
 \closeoutputstream{colorfigures}
}

\newcommand{\longrule}{\rule{1em}{.3pt}}
\usepackage{colortbl} 
\newcommand{\shadecell}{\cellcolor{black!20!white}}

% vertical alignment of  numbered  example
\newcommand{\eabox}[2][-.7\baselineskip]{
  \ea
    \parbox[t]{.8\textwidth}{
      \vspace{#1}
      #2
     } 
  \z
}
\newcommand{\exbox}[2][-.7\baselineskip]{
  \ex
    \parbox[t]{.8\textwidth}{
      \vspace{#1}
      #2
     }  
}

%fix \verb error in biblatex
\makeatletter
\def\blx@maxline{77}
\makeatother


\newcommand{\twodigitexamples}{\exewidth{(23)}}
\newcommand{\threedigitexamples}{\exewidth{(234)}}
\newcommand{\fourdigitexamples}{\exewidth{(2345)}}

\newcommand{\noabstract}{\vspace*{-2\baselineskip}} %for chapters without abstract

\newcommand{\barplot}[4]{%
  \begin{tikzpicture}
    \begin{axis}[
	xlabel={#1},  
	ylabel={#2}, 
	axis lines*=left, 
        width  = \textwidth,
	height = .3\textheight,
    	nodes near coords, 
	xtick=data,
	x tick label style={},  
	ymin=0,
	symbolic x coords={#3},
	]
	\addplot+[ybar,lsRichGreen!80!black,fill=lsRichGreen] plot coordinates {
	    #4
	}; 
    \end{axis} 
  \end{tikzpicture} 
}

\newcommand{\rephrase}[2]{{\color{yellow!30!black}#2}\todo{replaced `#1'}}

\newcommand{\missref}[2][]{\todo[#1]{missing reference #2}}