diff options
author | Karl Berry <karl@freefriends.org> | 2016-10-15 22:53:09 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-10-15 22:53:09 +0000 |
commit | 77dff8bbd2d08ec191b455f5c747d734f91cbc2b (patch) | |
tree | ae4d1209998124bc4bb5d914022fe9fffae87b45 /Master/texmf-dist/tex | |
parent | 40a029d723e7e9ab61a8aeb2203ab461227c3ca2 (diff) |
ling-macros, previously lingmacros (13oct16)
git-svn-id: svn://tug.org/texlive/trunk@42268 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/ling-macros/ling-macros.sty | 387 |
1 files changed, 387 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/ling-macros/ling-macros.sty b/Master/texmf-dist/tex/latex/ling-macros/ling-macros.sty new file mode 100644 index 00000000000..768945fe9fc --- /dev/null +++ b/Master/texmf-dist/tex/latex/ling-macros/ling-macros.sty @@ -0,0 +1,387 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%% +%%%%%% %% ling-macros.sty +%% Copyright 2016 Andrew McKenzie (andrew.mckenzie@ku.edu) +% +%% not to be confused with lingmacros.sty, a part of tree-dvips.sty +% +% + %%% Thanks to Lydia Newkirk for the name suggestion. + % +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Andrew McKenzie. +% +% This work consists of the files ling-macros.sty and ling-macros-doc.tex + + + +%%%%%%%%% ESSENTIAL COMMANDS %%%%%%%%%%%%%%%%%%%%%%%%%%% +\NeedsTeXFormat{LaTeX2e} % the format + \ProvidesPackage{ling-macros}[2016/10/01 package of linguistics macros] % package delivery + + % 2011/12/10, version 1.0 +% 2012/07/31, version 1.2 % update +% last update: 2014/01/28, version 1.3 % update with semantics stuff +% last update: 2014/02/10, version 2.0 % clean and organize commands, add documentation +% last update: 2016/10/01, version 2.1 % add options, clean up for CTAN +% last update: 2016/10/12, version 2.2 % changed name to ling-macros + + + \RequirePackage{gb4e} % Example numbering and linguistic glosses (gb4e style) if you turn this off, turn off the corresponding macros! + %Lengths for example macros. As is they don't affect gb4e, but options will adjust these + \newlength{\bexskip}\setlength{\bexskip}{-.0\baselineskip}% space before exe environment {in proportions of \baselineskip} + \newlength{\bxlskip}\setlength{\bxlskip}{-.0\baselineskip}% space before xlist environment {in proportions of \baselineskip} + \newlength{\bexsep}\setlength{\bexsep}{0pt}% space between examples in exe environment {in points} + \newlength{\bxlsep}\setlength{\bxlsep}{0pt}% space between examples in exe environment {in points} + \newlength{\bexindent}\setlength{\bexindent}{0ex}%% space of label indent in exe environment {in ex units} + \newlength{\bxlindent}\setlength{\bxlindent}{0ex}%% space of label indent in xlist environment {in ex units} + \newlength{\fexskip}\setlength{\fexskip}{.0\baselineskip}% space after exe environment {in proportions of \baselineskip}} + \newlength{\fxlskip}\setlength{\fxlskip}{.0\baselineskip}% space after xlist environment {in proportions of \baselineskip}} + \newlength{\bexlabel}\setlength{\bexlabel}{0pt} + \newlength{\bxllabel}\setlength{\bxllabel}{0pt} + + % Example macros (gb4e package) + \newcommand{\bex}{% % Begin example environment + \vspace{\bexskip}% % space before + \begin{exe}% + \addtolength{\itemsep}{\bexsep}% % space between examples + \addtolength{\itemindent}{\bexindent}% % space before example number + \addtolength{\labelsep}{\bexlabel}% % space between example number and example + }% + \newcommand{\fex}{% % End (finish) example environment + \end{exe}% + \vspace{\fexskip}% % space after + }% +%%% %%%%%%% + \newcommand{\bxl}{% % Begin xlist environment + \vspace{\bxlskip}% % space before + \begin{xlist}% + \addtolength{\itemsep}{\bexsep}% % space between examples + \addtolength{\itemindent}{\bxlindent}% % space before example number + \addtolength{\labelsep}{\bxllabel}% % space between example number and example + }% + \newcommand{\fxl}{% % End (finish) xlist environment + \end{xlist}% + \vspace{\fxlskip}% % space after + }% + + % \RequirePackage{linguex} % Example numbering and linguistic glosses (linguex style) Turn off gb4e if you use this + + % \RequirePackage{tipa} % International Phonetic Alphabet + + \RequirePackage{stmaryrd} % Necessary for some semantics symbols (see \den) + \RequirePackage{amssymb} % Necessary for some mathematic symbols (see \nl) + \RequirePackage{pbox} % Necessary for scope boxes + \RequirePackage{ulem} % For striking-out text and special underlining + +% \RequirePackage{qtree} % Tree diagrams +% \RequirePackage{tikz-qtree} % Tree diagrams with tikz +% \RequirePackage{tree-dvips} % Arrows in trees and glosses (On menu bar, set "Typeset" to TeX and DVI) +% %\RequirePackage{parsetree} % Alternate tree diagram drawing package + + \RequirePackage{upgreek} %upright rather than italic Greek letters + \RequirePackage{relsize} % allows relative sizes for small things + + + +%LaTeX list macros +\newcommand{\ben}{\begin{enumerate}} % Begin enumerate environment +\newcommand{\fen}{\end{enumerate}} % End (finish) enumerate environment +\newcommand{\bit}{\begin{itemize}} % Begin itemize environment +\newcommand{\fit}{\end{itemize}} % End (finish) enumerate environment + + + + +%Common Linguistics stuff +\newcommand{\featuresize}{\smaller[2]} % necessary for feature commands! you can change this, though. +\newcommand{\alert}{\textbf} % highlights a part of an example. Compatible with beamer + \newcommand{\term}[1]{{\bfseries #1}} % New terminology +\newcommand{\ol}[1]{\textit{#1}} % Object language expression + + +%Indices %requires relsize package + \newcommand{\ix}[1]{\ensuremath{_{#1}}} % ix =index; in text-semantics mode, allows upright subscript indices with non-math mode text + + \newcommand{\ux}[1]{\ensuremath{_{\textrm{\smaller[2]{#1}}}}} % ux = upright index; in all modes, places upright subscript indices with non-math mode text + +\newcommand{\superx}[1]{\ensuremath{^{\textrm{\smaller[2]{#1}}}}} + % superx = superscript index. For subscripts, see \ix and \ux above + + \newcommand{\readas}[1]{{\scshape{read:} \textsl{#1}}} % Read formal expressions in plain language + + +% Null symbol +\newcommand{\nl}{\ensuremath{\varnothing}} % Null symbol (\null is already used) + % Requires amssymb package, or a class that calls it +%% Prime symbol in text + \newcommand{\pri}{\ensuremath{^\prime}} % allows a redefinition for text mode + +%% Glossing + + \newcommand{\m}[1]{\textsc{#1}} % morpheme glossing as small caps: clashes with fontspec, where \m does stuff. + \newcommand{\mc}[1]{\textsc{#1}} % morpheme glossing as small caps: does not clash with fontspec +\newcommand{\mb}{\ensuremath{-}} %wider morpheme break symbol (and can be changed) + +%% Contexts for elicitation: + +\newenvironment{context}{\begin{quote}% + \bfseries Context: \\% + \mdseries\slshape }%open environment + {\end{quote}}%close environment + + +%% Phonology +\newcommand{\underlying}[1]{\settowidth{\prulewidth}{#1}\ensuremath{\left/ \pbox[c]{\prulewidth}{#1} \right/}} % underlying form +\newcommand{\becomes}{\ensuremath{\to}~} % changes to +\newlength{\prulewidth} % sets variable width for \prules (requires pbox package} +\newcommand{\spoken}[1]{\settowidth{\prulewidth}{#1}\ensuremath{\left[~ \pbox[c]{\prulewidth}{#1} ~\right]}} % spoken form +\newcommand{\environ}{\parbox[c]{1em}{\larger[2] \ensuremath{\left/ \right.}}} % in the environment of (requires relsize) + +\newcommand{\spot}{\rule[-1pt]{2ex}{.5pt}} % location of change + +\newcommand{\prule}[3]{\underlying{#1} \becomes \spoken{#2} \environ #3} % puts all the other commands together +\newcommand{\iparule}[3]{{\tipaencoding \underlying{#1} \becomes \spoken{#2} \environ #3} } % puts all the other commands together with ipa. Requires tipa package + +% allows setting of environment bar +\newcommand{\environset}[1]{\parbox[c]{1em}{\larger[#1] $/$}} % in the environment of, variable size (requires relsize) +\newcommand{\pruleset}[4]{\underlying{#1} \becomes \spoken{#2} \environset{#4} #3} % puts all the other commands together +\newcommand{\iparuleset}[4]{{\tipaencoding \underlying{#1} \becomes \spoken{#2} \environset{#4} #3} } % puts all the other commands together with ipa Requires tipa package + + \newcommand{\syll}{\ensuremath{_\sigma}} % syllable symbol + + %%% Writing feature matrices +\newcommand{\fmleft}{$\left[ \begin{array}{c l}} % Big brackets, left +\newcommand{\fmright}{\end{array} \right]$} % Big brackets, right + \newcommand{\fmat}[2]{{#1}&{\textrm{#2}} \\ } % Inside array notation + + +%%%%%%%%%% SYNTAX MACROS %%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\xbar}[1]{$\overline{\textrm{#1}}$} % The bar in X-bar (see \pri for prime mark) +\newcommand{\head}[1]{#1{\ensuremath{^\circ}}} % Syntactic head naming ... \head{C} +\newcommand{\lv}{{\itshape v}} % Little v label +\newcommand{\feat}[1]{{\featuresize\ensuremath{[}#1\ensuremath{]}}} % features in trees and diagrams +\newcommand{\textfeat}[1]{\ensuremath{[}\mbox{#1}\ensuremath{]}} % features in text +\newcommand{\dcopy}[1]{\sout{~#1~}} % deleted copy (requires ulem package) +\newcommand{\ufeat}[1]{\feat{\textit{u}#1:\rule[-1pt]{2ex}{.5pt}}} % Unvalued/uninterpretable feature; given X: [uX:__] +\newcommand{\unv}[1]{\textit{u}#1:\rule[-1pt]{2ex}{.5pt}} % Unvalued/uninterpretable feature part; given X: [uX:__] % Goes inside \feat or \textfeat command + \newcommand{\mroot}[1]{\ensuremath{\sqrt{\hspace{1pt}\textrm{#1}\hspace{2pt}}}} % morphological roots + + + +%%%%%%%%% SEMANTICS MACROS%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + % Delimiters + +\newcommand{\den}[1]{\ensuremath{\llbracket}\,{#1}\,\ensuremath{\rrbracket}} + % Denotation brackets + % Requires stmaryrd package ... \usepackage{stmaryrd} +\newcommand{\dena}[2]{{\ensuremath{\llbracket}\,{#1}\,\ensuremath{\rrbracket}}\ensuremath{^{{#2}}}} + % Denotation brackets with assignment variables (requires stmaryrd package) +\newcommand{\denamod}[3]{\ensuremath{\llbracket}\,{#1}\,\ensuremath{\rrbracket^{{#2}^{{#3}}}}} + % Denotation brackets with modified assignment variables (requires stmaryrd package) +\newcommand{\denac}[2]{\ensuremath{\llbracket}\,{#1}\,\ensuremath{\rrbracket^{{#2}_{c}}}} + % Denotation brackets with assignment variable, context c (requires stmaryrd) +\newcommand{\denacmod}[3]{\ensuremath{\llbracket}\,{#1}\,\ensuremath{\rrbracket^{{#2}_{{c}}^{{#3}}}}} + % Denotation brackets with modified assignment variable, context c (requires stmaryrd) + + \newcommand{\denol}[1]{\den{\ol{#1}}} % Denotation with object language + \newcommand{\denola}[2]{\dena{\ol{#1}}{#2}} % Denotation + assignment with object language + \newcommand{\denolamod}[3]{\denamod{\ol{#1}}{#2}{#3}} % Denotation + modified assignment with object language + \newcommand{\denolac}[2]{\denac{\ol{#1}}{#2}} + \newcommand{\denolacmod}[3]{\denacmod{\ol{#1}}{#2}{#3}} + + % Nested scope boxes (these can be useful for clarifying complex formulas. Requires pbox package + \newlength{\scopewidth} %introduces a variable width + \newcommand{\scopebox}[1]{\settowidth{\scopewidth}{#1} % sets width to that of line, then creates a pbox with maximum of that width with delimiters. + \ensuremath{\left[ ~ {\pbox[c]{\scopewidth}{#1}}~\right] }} + \newcommand{\innerscopebox}[1]{% % creates a pbox with parent maximum width with delimiters. + \ensuremath{\left[ ~ {\pbox[c]{\scopewidth}{#1}}~\right] }} + + + + +\newcommand{\type}[1]{\ensuremath{\langle{#1}\rangle}} % Type brackets for type-theory ... \type{e,\type{s,t}} +\newcommand{\uptype}[1]{\ensuremath{\langle{\mathrm{#1}}\rangle}} + + % Set notation: + \newcommand{\set}[1]{\ensuremath{\{~ #1 ~\}}} % Encloses a set (easier to see in source) + \newcommand{\varset}[2]{\ensuremath{\{~ #1 ~|~ #2 ~\}}} % Encloses an abstracted set + \newcommand{\cvarset}[2]{\ensuremath{\{~ #1 ~{:}~ #2 ~\}}} % Encloses an abstracted set, with a colon + + %Semantic operators + \newcommand{\lam}[1]{\ensuremath{\lambda #1}} % Lambda operator ... \lam{x} + \newcommand{\some}[1]{\ensuremath{\exists #1}} % Existential quantifier ... \some{x} + \newcommand{\all}[1]{\ensuremath{\forall #1}} %Universal quantifier ... \all{x} + \newcommand{\no}[1]{\ensuremath{\neg\exists #1}} % Negative quantifier + \newcommand{\ddet}[1]{\ensuremath{\iota #1}} % Definite determiner ... \ddet{x} + % \newcommand{\EX}{{\sffamily E\hspace{-.4ex}X}} % Exemplification operator + + +%% Semantics stuff +\newcommand{\form}[1]{\ensuremath{#1}} % Formal expression / formula +\newcommand{\f}[1]{\ensuremath{#1}} % Formal expresssion that stay formal in text-semantics + \newcommand{\lamd}[2]{\lam{#1} \ensuremath{\in} D\ix{#2}} % lambda-notation with domain + + + %% Writing functions +\newcommand{\fleft}{$\left[ \begin{array}{ccr}} % Big brackets, left +\newcommand{\fright}{\end{array} \right]$} % Big brackets, right + \newcommand{\func}[2]{{\textrm{#1}} & \to & {\textrm{#2}} \\ } % Inside array notation + + %%% Function notation : to write out the parts of the function explicitly +\newcommand{\funcnot}[5]{% +\ensuremath{#1} : %#1 the function variable + \pbox[t]{2.0\textwidth}{% + \ensuremath{#2}% #2 domain + ~\ensuremath{\to} \ensuremath{#3} \\%#3 the range + \all{#4}%#4 the argument variable + ~\ensuremath{\in} \ensuremath{#2}, \ensuremath{#1(#4) =} #5% #5 the truth-conditions + }% + } + + + +% \newcommand{\funcnot}[3]{\ensuremath{f }: \pbox[t]{.8\textwidth}{\ensuremath{#1 \to \{1, 0\} }\\ \ensuremath{\all{#2} \in #1; f(#2) = 1} iff #3}} % Function notation + + % \newcommand{\funcnotx}[2]{\parbox[m]{2.5in}{\vspace{2pt}f : #1 $\to$ \{1, 0\} \\for all x $\in$ #1, f(x) = 1 iff #2}} % Function %notation + +% \newcommand{\crule}[1]{\textbf{#1 :}} % compositional rule in a tree +%%% + + + + \DeclareOption{leftflush}{% sets gb4e examples as left flushed + + +\setlength{\bexindent}{-3.2ex} % shortens indentation of examples to put them on the left +\setlength{\bexlabel}{-2ex} % shortens space between example number and example +\setlength{\bxllabel}{-1.0ex} % shortens indentation of examples to put them nearer to the left +\setlength{\bxlindent}{-5ex} % shortens space between example number and example + + \newcommand{\lessthanten}{ % sets ex numbers 1-9 all the way at the left. Must put command outside exe + \setlength{\bexindent}{-3.5ex} % shortens indentation of examples to put them on the left + \setlength{\bexlabel}{-1.2ex} % shortens space between example number and example + } + +\newcommand{\tenormore}{ % sets ex numbers 10+ to the left. (i.e. undoes \lessthanten) Must put command outside exe +\setlength{\bexindent}{-3.2ex} % shortens indentation of examples to put them on the left +\setlength{\bexlabel}{-2ex} % shortens space between example number and example +} + + }%%end of option leftflush + + + \DeclareOption{shortspace}{%sets gb4e examples with less white space. + + \setlength{\bexskip}{-.7\baselineskip} % reduces space before + \setlength{\bxlskip}{-.4\baselineskip} +\setlength{\bexsep}{-4pt} % reduces space between examples + \setlength{\bxlsep}{-2pt} + \setlength{\fexskip}{-.7\baselineskip} % reduces space after + \setlength{\fxlskip}{-.2\baselineskip} + + +}%%end of option shortspace + +\DeclareOption{abstract}{%combines leftflush and shortspace for use in abstracts + + +\setlength{\bexindent}{-3.2ex} % shortens indentation of examples to put them on the left +\setlength{\bexlabel}{-2ex} % shortens space between example number and example +\setlength{\bxllabel}{-1.0ex} % shortens indentation of examples to put them nearer to the left +\setlength{\bxlindent}{-5ex} % shortens space between example number and example + + \setlength{\bexskip}{-.7\baselineskip} % reduces space before + \setlength{\bxlskip}{-.4\baselineskip} +\setlength{\bexsep}{-4pt} % reduces space between examples + \setlength{\bxlsep}{-2pt} + \setlength{\fexskip}{-.7\baselineskip} % reduces space after + \setlength{\fxlskip}{-.2\baselineskip} + +\newcommand{\lessthanten}{ % sets ex numbers 1-9 all the way at the left. Must put command outside exe + \setlength{\bexindent}{-3.5ex} % shortens indentation of examples to put them on the left + \setlength{\bexlabel}{-1.2ex} % shortens space between example number and example + } + +\newcommand{\tenormore}{ % sets ex numbers 10+ to the left. (i.e. undoes \lessthanten) Must put command outside exe +\setlength{\bexindent}{-3.2ex} % shortens indentation of examples to put them on the left +\setlength{\bexlabel}{-2ex} % shortens space between example number and example +} +%%% + }%end of option abstract + + \DeclareOption{text-semantics}{%% sets semantic formulas in upright fashion + + % Delimiters + +\renewcommand{\den}[1]{\ensuremath{\llbracket}\,{#1}\,\ensuremath{\rrbracket}} + % Denotation brackets + % Requires stmaryrd package ... \usepackage{stmaryrd} +\renewcommand{\dena}[2]{{\ensuremath{\llbracket}\,{#1}\,\ensuremath{\rrbracket}}\ensuremath{^{\textrm{\smaller[2]{#2}}}}} + % Denotation brackets with assignment variables (requires stmaryrd package) +\renewcommand{\denamod}[3]{\ensuremath{\llbracket}\,{#1}\,\ensuremath{\rrbracket^{\mathrm{\smaller[2]{#2}}^{\textrm{\smaller[4]{#3}}}}}} + % Denotation brackets with modified assignment variables (requires stmaryrd package) +\renewcommand{\denac}[2]{$\llbracket$\,{#1}\,$\rrbracket^{\mathrm{#2}_{\tiny\textrm{c}}}$} + % Denotation brackets with assignment variable, context c (requires stmaryrd) +\renewcommand{\denacmod}[3]{$\llbracket$\,{#1}\,$\rrbracket^{\mathrm{#2}_{\tiny\textrm{c}}^{\tiny\textrm{#3}}}$} + % Denotation brackets with modified assignment variable, context c (requires stmaryrd) + + \renewcommand{\denol}[1]{\den{\ol{#1}}} % Denotation with object language + \renewcommand{\denola}[2]{\dena{\ol{#1}}{#2}} % Denotation + assignment with object language + \renewcommand{\denolamod}[3]{\denamod{\ol{#1}}{#2}{#3}} % Denotation + modified assignment with object language + \renewcommand{\denolac}[2]{\denac{\ol{#1}}{#2}} + \renewcommand{\denolacmod}[3]{\denacmod{\ol{#1}}{#2}{#3}} + + + %Sets + \renewcommand{\set}[1]{\{ #1 \}} % Encloses a set (easier to see in source) + \renewcommand{\varset}[2]{\{ #1 \ensuremath{|} #2 \}} % Encloses an abstracted set + \renewcommand{\cvarset}[2]{\{ #1 \ensuremath{:} #2 \}} % Encloses an abstracted set, with a colon + %Indices + \renewcommand{\ix}[1]{\ensuremath{_{\textrm{\smaller[2]{#1}}}}} + % ix =index; Upright subscript indices with non-math mode text + + \renewcommand{\lamd}[2]{\lam{#1} \ensuremath{\in} D\ix{#2}} % lambda-notation with domain +\renewcommand{\superx}[1]{\ensuremath{^{\textrm{\smaller[2]{#1}}}}} + % superx = superscript index. For subscripts, see \ix above + + + + %Semantic operators + \renewcommand{\lam}[1]{\ensuremath{\uplambda}#1} % Lambda operator ... \lam{x} + \renewcommand{\some}[1]{\ensuremath{\exists}#1} % Existential quantifier ... \some{x} + \renewcommand{\no}[1]{\ensuremath{\neg\exists}#1} % Negative quantifier + \renewcommand{\all}[1]{\ensuremath{\forall}#1} %Universal quantifier ... \all{x} + \renewcommand{\form}{} % Formal expression / formula + \renewcommand{\pri}{\ensuremath{^\prime}} + \renewcommand{\ddet}[1]{\ensuremath{\upiota}#1} % Definite determiner ... \ddet{x} + + + %Funcnot + \renewcommand{\funcnot}[5]{% + {#1} : \pbox[t]{2.0\textwidth}{% 1 the function + {#2} {\ensuremath{\to}} #3 \\% the buffoon % the domain + \all{}{#4} \ensuremath{\in} #2, {#1(#4) =} #5% %object of domain + }% + } + + }%%end of option text-semantics + + + \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} + \ProcessOptions + + |