summaryrefslogtreecommitdiff
path: root/macros/xetex/latex/langsci/langsci-optional.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/xetex/latex/langsci/langsci-optional.sty
Initial commit
Diffstat (limited to 'macros/xetex/latex/langsci/langsci-optional.sty')
-rw-r--r--macros/xetex/latex/langsci/langsci-optional.sty441
1 files changed, 441 insertions, 0 deletions
diff --git a/macros/xetex/latex/langsci/langsci-optional.sty b/macros/xetex/latex/langsci/langsci-optional.sty
new file mode 100644
index 0000000000..a835d260af
--- /dev/null
+++ b/macros/xetex/latex/langsci/langsci-optional.sty
@@ -0,0 +1,441 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% 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}%
+}
+
+