%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%      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{\tobi}[3][0]{\parbox{0cm}{\raisebox{1em}[0cm]{\hspace{#1mm}#3}}#2}


