%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% File: langsci-optional.sty %% Author: Language Science Press (http://langsci-press.org) %% Date: Date: 2019-03-31 13:12 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{\langinfoverb}[3]{{\upshape #1~(% langinfo without index marker \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{Y}{>{\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} \usepackage{calc} \newlength{\fulllength} \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{\fulllength}{\parbox{\LSPTmp}{~}\parbox{#2mm}{~}} %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]{\fulllength}{\mbox{#1}}} } } \newcommand{\ule}[1]{%#1: stuff to underline, no extra length \ulp{#1}{0} } \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{\rephrase}[2]{{\color{yellow!30!black}#2}\todo{replaced `#1'}} \newcommand{\missref}[2][]{\todo[#1]{missing reference #2}} \newenvironment{indentquote}[1]% {\list{}{\leftmargin=#1\rightmargin=0pt}\item[]}% {\endlist} \newcommand{\phonrule}[3]{#1 $\to$ #2 / #3} \newcommand{\featurebox}[1]{$\left[\begin{tabular}{>{\scshape}c}#1\end{tabular}\right]$} \definecolor{RED}{cmyk}{0.05,1,0.8,0} %connect two elements with lines \newcommand{\connect}[2]{% \tikz[overlay,remember picture]{% \draw[-,thick] (#1) -- (#2) node {}; % } } \newcommand{\examplesroman}{ \let\eachwordone=\upshape \exfont{\upshape} } \newcommand{\examplesitalics}{ \let\eachwordone=\itshape \exfont{\itshape} } \newenvironment{modquote}[1][6mm]% slightly less indented quote for hyphenation issues {\list{}{\leftmargin=#1\rightmargin=0mm}\item[]}% {\endlist} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% Experimental feature for pointing out moving things. %%%% %%%% Buggy? Write to: kopeckyf@hu-berlin.de %%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usetikzlibrary{arrows,arrows.meta} \newcounter{lsConnectTempGroup} \NewDocumentCommand\ConnectTail{m O{\thelsConnectTempGroup}}{%read: mandatory arg #1, optional argument #2 with the current group counter as its default value. \edef\lsConnectTempPosition{#2}%\edef expands the argument, which means reading the current value of the counter. {\tikz[remember picture, anchor=base, baseline, inner xsep=0pt, inner ysep=-.5ex]\node (ConnectTempTail\lsConnectTempPosition) {\strut{}#1};}%\strut for baseline } \NewDocumentCommand\ConnectHead{s O{1ex} m O{\thelsConnectTempGroup}}{%read: star #1, optional argument (distance of arrow from text= std. one x-height), mand. arg. (node text), optional argument #2, the group specifier \edef\lsConnectTempPosition{#4}% \stepcounter{lsConnectTempGroup}%We have a match, let's update the group counter {\tikz[remember picture, anchor=base, baseline, inner xsep=0pt, inner ysep=-.5ex] \node (ConnectTempHead\lsConnectTempPosition) {\strut{}#3};% \tikz[remember picture] \draw[% we have a tail and a head, let's bring them together \IfBooleanTF#1{{Triangle[]}-}{-{Triangle[]}},% Check if the starred version is used. The starred version is right->left, the normal version left->right overlay] (ConnectTempTail\lsConnectTempPosition.south) -- ++(0,-#2) -| (ConnectTempHead\lsConnectTempPosition.south); }% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% Extras for use in (some) edited volumes %%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % for chapters without abstract \newcommand{\noabstract}{\vspace*{-2\baselineskip}} % for papers that have appendices, a replacement for \appendix. % Usage: \begin{paperappendix} \section{Title} ... \end{paperappendix % Will result in "Appendix A: Title" % \newcounter{paperappendixsection} \newenvironment{paperappendix}{% \let\oldthesection\thesection% \let\oldsectionformat\sectionformat% \setcounter{paperappendixsection}{0}% \def\thesection{\Alph{paperappendixsection}}% \def\sectionformat{\stepcounter{paperappendixsection}\appendixname\ \thesection:\enskip}% }{% \let\thesection\oldthesection% \let\sectionformat\oldsectionformat} %%%%%%%%%%%%%%%%%%%% %%%% %%%%% %%%% PLOTS %%%%% %%%% %%%%% %%%%%%%%%%%%%%%%%%%% % \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} % } % \usepackage{pgfmath,pgfplotstable} % \newcommand{\langsciplot}[2]{%% experimental % \pgfplotstablegetcolsof{#1.csv} % \pgfmathsetmacro{\langscicsvlength}{\pgfplotsretval-1} % \begin{tikzpicture}[trim axis right,trim axis left] % \begin{axis}[ % #2, % xtick=data, % axis lines*=left, % nodes near coords, % ymin=0, % width=\textwidth] % \foreach \i in {0,...,\langscicsvlength} { % \addplot[ % /pgf/number format/read comma as period % ] table [x index={0},y index={\i}] {#1.csv}; % } % \end{axis} % \end{tikzpicture} % } \newcommand{\LSfrac}[1]{{\addfontfeature{Fractions=On}#1}}% Use the fraction glyphs shipped with Libertine. The argument is n/m, where n and m are integers % Provide a raised tie bar for diphthongs and affricates with ascenders \newcommand{\hitie}[2]{% \mbox{#1}% \raisebox{.5mm}{% ͡% }% \mbox{#2}% } \newcommand{\hitier}[3][.7]{% \mbox{#2}% \hspace*{#1mm}% \raisebox{.5mm}{% ͡% }% \hspace*{-#1mm}% \mbox{#3}% } \newcommand{\hitiel}[3][.7]{% \mbox{#2}% \hspace*{-#1mm}% \raisebox{.5mm}{% ͡% }% \hspace*{#1mm}% \mbox{#3}% }