diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /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.sty | 441 |
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}% +} + + |