From a70c3b1833479b4409e5b938d82f0dbb3539f4c4 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 17 Jun 2017 23:46:41 +0000 Subject: leipzig (17jun17 git-svn-id: svn://tug.org/texlive/trunk@44625 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/leipzig/README | 47 - Master/texmf-dist/doc/latex/leipzig/README.md | 18 + Master/texmf-dist/doc/latex/leipzig/README.txt | 47 - Master/texmf-dist/doc/latex/leipzig/leipzig.acn | 2 + Master/texmf-dist/doc/latex/leipzig/leipzig.bno | 12 + Master/texmf-dist/doc/latex/leipzig/leipzig.pdf | Bin 470568 -> 594211 bytes Master/texmf-dist/makeindex/leipzig/leipzig.ist | 31 + Master/texmf-dist/source/latex/leipzig/leipzig.dtx | 2107 +++++++++++++++----- Master/texmf-dist/source/latex/leipzig/leipzig.ins | 79 +- Master/texmf-dist/tex/latex/leipzig/leipzig.sty | 605 ++++-- Master/texmf-dist/tex/latex/leipzig/leipzig.tex | 241 ++- Master/tlpkg/tlpsrc/collection-humanities.tlpsrc | 1 - Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 1 + 13 files changed, 2329 insertions(+), 862 deletions(-) delete mode 100644 Master/texmf-dist/doc/latex/leipzig/README create mode 100644 Master/texmf-dist/doc/latex/leipzig/README.md delete mode 100644 Master/texmf-dist/doc/latex/leipzig/README.txt create mode 100644 Master/texmf-dist/doc/latex/leipzig/leipzig.acn create mode 100644 Master/texmf-dist/doc/latex/leipzig/leipzig.bno create mode 100644 Master/texmf-dist/makeindex/leipzig/leipzig.ist (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/leipzig/README b/Master/texmf-dist/doc/latex/leipzig/README deleted file mode 100644 index 9975e07c36e..00000000000 --- a/Master/texmf-dist/doc/latex/leipzig/README +++ /dev/null @@ -1,47 +0,0 @@ -%% -%% This is file `README.txt', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% leipzig.dtx (with options: `readme') -%% This is a generated file. -%% -%% ---------------------------------------------------------------- -%% leipzig --- A package to typeset and index linguistic gloss abbreviations. -%% E-mail: natalie.a.weber@gmail.com -%% Released under the LaTeX Project Public License v1.3c or later -%% See http://www.latex-project.org/lppl.txt -%% ---------------------------------------------------------------- -%% -%% -%% Copyright (C) 2013 by Natalie Weber -%% -%% 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 Natalie Weber. -%% -%% This work consists of the files leipzig.dtx, -%% leipzig.ins -%% leipzig.tex -%% -%% and the derived files leipzig.sty and leipzig.pdf. -%% - -The leipzig package provides a set of macros for standard glossing abbreviations, with options to create new ones. They are mnemonic (e.g. \Acc{} for accusative, abbreviated \textsc{acc}). They can be used alone or on top of the glossaries package for easy indexing and glossary printing. - -For full indexing capabilities, leipzig should be used in conjunction with the glossaries package. Notes for installation are included in the package documentation. - -\endinput -%% -%% End of file `README.txt'. diff --git a/Master/texmf-dist/doc/latex/leipzig/README.md b/Master/texmf-dist/doc/latex/leipzig/README.md new file mode 100644 index 00000000000..d91cef71468 --- /dev/null +++ b/Master/texmf-dist/doc/latex/leipzig/README.md @@ -0,0 +1,18 @@ +The leipzig package indexes and prints all linguistic gloss abbreviations used in a document. It provides a set of macros for standard glossing abbreviations, with options to redefine these or to create new ones. For full indexing capabilities, leipzig should be used in conjunction with the glossaries package. Notes for installation are included in the package documentation. + +To install, run + + (pdf)latex leipzig.dtx + +to extract files. Further instructions are included in the package documentation. + +To typeset the documentation, run + + pdflatex leipzig.dtx + makeglossaries leipzig + pdflatex leipzig.dtx + pdflatex leipzig.dtx + + + + diff --git a/Master/texmf-dist/doc/latex/leipzig/README.txt b/Master/texmf-dist/doc/latex/leipzig/README.txt deleted file mode 100644 index 9975e07c36e..00000000000 --- a/Master/texmf-dist/doc/latex/leipzig/README.txt +++ /dev/null @@ -1,47 +0,0 @@ -%% -%% This is file `README.txt', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% leipzig.dtx (with options: `readme') -%% This is a generated file. -%% -%% ---------------------------------------------------------------- -%% leipzig --- A package to typeset and index linguistic gloss abbreviations. -%% E-mail: natalie.a.weber@gmail.com -%% Released under the LaTeX Project Public License v1.3c or later -%% See http://www.latex-project.org/lppl.txt -%% ---------------------------------------------------------------- -%% -%% -%% Copyright (C) 2013 by Natalie Weber -%% -%% 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 Natalie Weber. -%% -%% This work consists of the files leipzig.dtx, -%% leipzig.ins -%% leipzig.tex -%% -%% and the derived files leipzig.sty and leipzig.pdf. -%% - -The leipzig package provides a set of macros for standard glossing abbreviations, with options to create new ones. They are mnemonic (e.g. \Acc{} for accusative, abbreviated \textsc{acc}). They can be used alone or on top of the glossaries package for easy indexing and glossary printing. - -For full indexing capabilities, leipzig should be used in conjunction with the glossaries package. Notes for installation are included in the package documentation. - -\endinput -%% -%% End of file `README.txt'. diff --git a/Master/texmf-dist/doc/latex/leipzig/leipzig.acn b/Master/texmf-dist/doc/latex/leipzig/leipzig.acn new file mode 100644 index 00000000000..ef4fdbba50e --- /dev/null +++ b/Master/texmf-dist/doc/latex/leipzig/leipzig.acn @@ -0,0 +1,2 @@ +\glossaryentry{IGT?\glossentry{igt}|setentrycounter[]{page}\glsnumberformat}{7} +\glossaryentry{IGT?\glossentry{igt}|setentrycounter[]{page}\glsnumberformat}{13} diff --git a/Master/texmf-dist/doc/latex/leipzig/leipzig.bno b/Master/texmf-dist/doc/latex/leipzig/leipzig.bno new file mode 100644 index 00000000000..68cfe0dbaab --- /dev/null +++ b/Master/texmf-dist/doc/latex/leipzig/leipzig.bno @@ -0,0 +1,12 @@ +\glossaryentry{c?\glossentry{class}|setentrycounter[]{page}\glsnumberformat}{13} +\glossaryentry{c?\glossentry{class}|setentrycounter[]{page}\glsnumberformat}{13} +\glossaryentry{c?\glossentry{class}|setentrycounter[]{page}\glsnumberformat}{13} +\glossaryentry{c?\glossentry{class}|setentrycounter[]{page}\glsnumberformat}{13} +\glossaryentry{c?\glossentry{class}|setentrycounter[]{page}\glsnumberformat}{13} +\glossaryentry{c?\glossentry{class}|setentrycounter[]{page}\glsnumberformat}{13} +\glossaryentry{c?\glossentry{class}|setentrycounter[]{page}\glsnumberformat}{13} +\glossaryentry{c?\glossentry{class}|setentrycounter[]{page}\glsnumberformat}{13} +\glossaryentry{c?\glossentry{class}|setentrycounter[]{page}\glsnumberformat}{14} +\glossaryentry{c?\glossentry{class}|setentrycounter[]{page}\glsnumberformat}{14} +\glossaryentry{c?\glossentry{class}|setentrycounter[]{page}\glsnumberformat}{14} +\glossaryentry{c?\glossentry{class}|setentrycounter[]{page}\glsnumberformat}{14} diff --git a/Master/texmf-dist/doc/latex/leipzig/leipzig.pdf b/Master/texmf-dist/doc/latex/leipzig/leipzig.pdf index 45eaebd4491..4874bb244ac 100644 Binary files a/Master/texmf-dist/doc/latex/leipzig/leipzig.pdf and b/Master/texmf-dist/doc/latex/leipzig/leipzig.pdf differ diff --git a/Master/texmf-dist/makeindex/leipzig/leipzig.ist b/Master/texmf-dist/makeindex/leipzig/leipzig.ist new file mode 100644 index 00000000000..2b031cf0295 --- /dev/null +++ b/Master/texmf-dist/makeindex/leipzig/leipzig.ist @@ -0,0 +1,31 @@ +% makeindex style file created by the glossaries package +% for document 'leipzig' on 2017-6-18 +actual '?' +encap '|' +level '!' +quote '"' +keyword "\\glossaryentry" +preamble "\\glossarysection[\\glossarytoctitle]{\\glossarytitle}\\glossarypreamble\n\\begin{theglossary}\\glossaryheader\n" +postamble "\%\n\\end{theglossary}\\glossarypostamble\n" +group_skip "\\glsgroupskip\n" +item_0 "\%\n" +item_1 "\%\n" +item_2 "\%\n" +item_01 "\%\n" +item_x1 "\\relax \\glsresetentrylist\n" +item_12 "\%\n" +item_x2 "\\relax \\glsresetentrylist\n" +delim_0 "\{\\glossaryentrynumbers\{\\relax " +delim_1 "\{\\glossaryentrynumbers\{\\relax " +delim_2 "\{\\glossaryentrynumbers\{\\relax " +delim_t "\}\}" +delim_n "\\delimN " +delim_r "\\delimR " +headings_flag 1 +heading_prefix "\\glsgroupheading\{" +heading_suffix "\}\\relax \\glsresetentrylist " +symhead_positive "glssymbols" +numhead_positive "glsnumbers" +page_compositor "." +suffix_2p "" +suffix_3p "" diff --git a/Master/texmf-dist/source/latex/leipzig/leipzig.dtx b/Master/texmf-dist/source/latex/leipzig/leipzig.dtx index 5431f269e81..249ef478dea 100644 --- a/Master/texmf-dist/source/latex/leipzig/leipzig.dtx +++ b/Master/texmf-dist/source/latex/leipzig/leipzig.dtx @@ -5,11 +5,20 @@ \iffalse % %<*readme> +The leipzig package indexes and prints all linguistic gloss abbreviations used in a document. It provides a set of macros for standard glossing abbreviations, with options to redefine these or to create new ones. For full indexing capabilities, leipzig should be used in conjunction with the glossaries package. Notes for installation are included in the package documentation. -The leipzig package provides a set of macros for standard glossing abbreviations, with options to create new ones. They are mnemonic (e.g. \Acc{} for accusative, abbreviated \textsc{acc}). They can be used alone or on top of the glossaries package for easy indexing and glossary printing. +To install, run -For full indexing capabilities, leipzig should be used in conjunction with the glossaries package. Notes for installation are included in the package documentation. + (pdf)latex leipzig.dtx +to extract files. Further instructions are included in the package documentation. + +To typeset the documentation, run + + pdflatex leipzig.dtx + makeglossaries leipzig + pdflatex leipzig.dtx + pdflatex leipzig.dtx % %<*internal> \fi @@ -18,19 +27,73 @@ For full indexing capabilities, leipzig should be used in conjunction with the g \expandafter\begingroup \fi % -% Copyright (C) 2013 by Natalie Weber -% -% 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. -% +%<*install> +\input docstrip.tex +\keepsilent +\askforoverwritefalse +\preamble +---------------------------------------------------------------- +leipzig --- A package to typeset and index linguistic gloss abbreviations. +E-mail: natalie.a.weber@gmail.com +Released under the LaTeX Project Public License v1.3c or later +See http://www.latex-project.org/lppl.txt +---------------------------------------------------------------- + +Copyright (C) 2017 by Natalie Weber + +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 Natalie Weber. + +This work consists of the file leipzig.dtx, +and the derived files + README.md, + leipzig.ins, + leipzig.tex, + leipzig.sty, and + leipzig.pdf + +\endpreamble +\postamble + +Copyright (C) 2017 by Natalie Weber + +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. +\endpostamble +\usedir{tex/latex/leipzig} +\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}} +\generate{\file{\jobname.tex}{\from{\jobname.dtx}{abbrvs}}} +% +%\endbatchfile %<*internal> +\nopreamble\nopostamble +\usedir{source/latex/leipzig} +\generate{ + \file{\jobname.ins}{\from{\jobname.dtx}{install}} +} +\nopreamble\nopostamble +\usedir{doc/latex/leipzig} +\generate{ + \file{README.md}{\from{\jobname.dtx}{readme}} +} \ifx\fmtname\nameofplainTeX \expandafter\endbatchfile \else @@ -43,40 +106,23 @@ For full indexing capabilities, leipzig should be used in conjunction with the g %\NeedsTeXFormat{LaTeX2e}[1996/10/24]% %\ProvidesPackage{leipzig}% %<*package> - [2013/05/26 v1.0 Leipzig package for linguistic abbreviations]% + [2017/06/16 v2.0 Leipzig package for linguistic abbreviations]% %\AtBeginDocument{% % \MakeShortVerb{\|} % \DeleteShortVerb{"}} % -% %<*driver> -\documentclass[12pt]{ltxdoc}% -%\usepackage[bmargin=1.5in]{geometry}% +\documentclass[11pt]{ltxdoc}% +\usepackage{paralist}% \usepackage{url}% -%\usepackage[utf8x]{inputenc}% +\urlstyle{same}% \usepackage[T1]{fontenc}% \usepackage{tipa}% \usepackage{expex}% to typeset examples -%\usepackage[longnamesfirst]{natbib} -%\setcitestyle{authoryear,round,semicolon,aysep={},yysep={,},notesep={:}}% -\bibliographystyle{apa-good} -\usepackage{longtable}% -\usepackage{booktabs}% +\usepackage{booktabs}% for nice tabular +\bibliographystyle{apa} \usepackage[nottoc,notlof,notlot]{tocbibind} % Put the bibliography in the ToC - -\newcommand{\refp}[1]{(\protect\ref{#1})}% - % glossaries somewhere redefines the tilde -%\catcode`\~=\active %catcode 13 -%\def~{\ } -\def\leipzig{\textsf{leipzig}} -\def\glossaries{\textsf{glossaries}} -%\EnableCrossrefs -\DisableCrossrefs -%\OnlyDescription -\CodelineIndex -%\PageIndex -\RecordChanges -\usepackage{hyperref}% +\usepackage{hyperref} \usepackage{xcolor} \definecolor{dark-red}{rgb}{0.4,0.15,0.15} \definecolor{dark-blue}{rgb}{0.15,0.15,0.4} @@ -84,38 +130,38 @@ For full indexing capabilities, leipzig should be used in conjunction with the g \hypersetup{ colorlinks, linkcolor={dark-red}, citecolor={dark-blue}, urlcolor={medium-blue} } -\usepackage[nomain]{glossaries}[2012/05/21 v3.02 (NLCT)]% -\usepackage{glossary-inline}% -\newglossarystyle{mysuper}{% -\glossarystyle{super}% based on super - \renewenvironment{theglossary}% - {\tablehead{}\tabletail{}% - \begin{supertabular}{@{}lp{\glsdescwidth}}}% - {\end{supertabular}}% - \renewcommand*{\glossaryheader}{}% - \renewcommand*{\glsgroupheading}[1]{}% - \renewcommand*{\glossaryentryfield}[5]{% - \glsentryitem{##1}\glstarget{##1}{##2} & \makefirstuc{##3}\glspostdescription{}\\}% - \renewcommand*{\glossarysubentryfield}[6]{% - & - \glssubentryitem{##2}% - \glstarget{##2}{\strut}\makefirstuc{##4}\glspostdescription{}\\}% - \renewcommand*{\glsgroupskip}{}% -}% -\usepackage{leipzig}% +\usepackage[acronyms]{\jobname} +\newglossary{bantu}{bns}{bno}{Bantu} +%\newglossary{gglo}{gls}{glo}{Change history} +%\newglossary{gind}{ind}{idx}{Index} +\makeglossaries +\newacronym{igt}{IGT}{interlinear gloss text} +\newleipzig[type=bantu,name={c\#},description={class marker (\# = class number)}]{class}{c}{class marker} +\newcommand{\Cl}[1]{{\Class}{\small #1}} \newleipzig{inc}{inc}{inclusive}% -\newleipzig{vblz}{vb}{verbalizer}% +\newleipzig{verbz}{vb}{verbalizer}% \newcommand{\Fdui}{{\First}{\Du}.{\Inc}}% -\makeglossaries -\glsdisablehyper +\newcommand{\refp}[1]{(\protect\ref{#1})}% +\def\leipzig{\textsf{leipzig}} +\def\glossaries{\textsf{glossaries}} +\EnableCrossrefs +%\DisableCrossrefs +%\OnlyDescription +\CodelineIndex +\PageIndex +\RecordChanges +% \iffalse meta-comment +% makeindex -s gglo.ist -o leipzig.gls leipzig.glo +% makeindex -s gind.ist -o leipzig.ind leipzig.idx +% \fi + \begin{document}% - \DocInput{leipzig.dtx}% + \DocInput{\jobname.dtx}% \end{document}% % -% % \fi % -%\CheckSum{0} +%\CheckSum{844} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -134,21 +180,6 @@ For full indexing capabilities, leipzig should be used in conjunction with the g % Right brace \} Tilde \~} % % -% \changes{v0.5}{2012/05/26}{First documented version (alpha).} -% \changes{v0.6}{2012/07/30}{Changed A, P, and S macros to |\Aarg{}|, |\Parg{}|, and |\Sarg{}|, at the suggestion of Benct Philip Jonsson.} -% \changes{v1.0}{2013/05/26}{First released version} -% -%\iffalse -% Why does it cause strange errors when [indexfirstonly] glossaries option is used? -% -%<*internal> -%%Suggestions: -%% Make the preamble declarations simpler. -%% Make a [nolinks] package option to not link leipzig to glossary (but allow other glossary items in other glossaries to link). -%% Make (first)leipzigfont package options. -% -%\fi -% % \DoNotIndex{\@@getoptionalarg,\@@next,\@bracketcheck,\@currsize,\@firstoftwo} % \DoNotIndex{\@secondoftwo,\@futurenonspacelet,\@getoptionalarg,\@optionaltemp} % \DoNotIndex{\@gsingle,\@ifnextchar,\@ifpackageloaded,\@ifundefined,\@ne,\z@} @@ -157,7 +188,7 @@ For full indexing capabilities, leipzig should be used in conjunction with the g % \DoNotIndex{\active,\addvspace,\advance,\afterassignment,\baselineskip} % \DoNotIndex{\baselinestretch,\begingroup\bgroup,\box,\catcode,\copy,\csname} % \DoNotIndex{\CurrentOption,\DeclareOption,\def,\detokenize,\egroup,\else,\empty} -% \DoNotIndex{\endcsname\endgraf\endgroup,PackageOptions,\eplain,\expandafter} +% \DoNotIndex{\endcsname\endgraf\endgroup,\PackageOptions,\eplain,\expandafter} % \DoNotIndex{\expandonce,\fi,\fill,\finalhyphendemerits,\futurelet,\gdef,\global} % \DoNotIndex{\gobble,\gobblespaces,\hbox,\hskip,\hspace,\ht,\hyphenpenalty} % \DoNotIndex{\identity,\ifdim,\ifmmode,\ifnum,\ifx,\ifvoid,\ignorespacesafterend} @@ -170,11 +201,17 @@ For full indexing capabilities, leipzig should be used in conjunction with the g % \DoNotIndex{\rightskip,\scantokens,\scshape,\selectfont,\setbox,\sim,\space} % \DoNotIndex{\strut,\textup,\the,\tlist@if@empty@nTF,\tolerance,\unhbox,\unskip} % \DoNotIndex{\unvbox,\upshape,\vbox,\vskip,\vtop,\wd,\z@,\z@skip,\endgraf} -% \DoNotIndex{} -% \DoNotIndex{} -% \DoNotIndex{} -% -% \GetFileInfo{leipzig.sty} +% \DoNotIndex{{\,},\@car,\@cdr,\@gobbletwo,\@ifpackagelater,\@nil} +% \DoNotIndex{\Acc,\Du,\Fdu,\Fpl,\Fsg,\Sdu,\Sg,\Spl,\Ssg,\Third,\Tdu,\Tpl,\Tsg,\First,\Second} +% \DoNotIndex{\vspace,\uppercase,\translatelet,\tempa,\tempb,\textsc,\string,\setlength,\settowidth} +% \DoNotIndex{\romannumeral,\RequirePackage,\renewenvironment,\renewcommand\mbox,\makebox,\makeatother,\makeatletter,\linebreak,\PassOptionsToPackage,\raggedcolumns,\ifstrempty,\input} +% \DoNotIndex{} +% \DoNotIndex{} +% \DoNotIndex{} +% \DoNotIndex{} +% \DoNotIndex{} +% +% \GetFileInfo{\jobname.sty} % %\title{\leipzig{} package documentation\thanks{This document corresponds to \leipzig{}~\fileversion, dated~\filedate.}} % \author{Natalie Weber\\\texttt{natalie.a.weber@gmail.com}} @@ -182,280 +219,577 @@ For full indexing capabilities, leipzig should be used in conjunction with the g % % \maketitle %\begin{abstract} -%\noindent The \leipzig{} package provides a set of macros for standard glossing abbreviations, with options to create new ones. They are mnemonic (e.g.~\verb+\Acc{}+ for accusative, abbreviated \textsc{acc}). They can be used alone or on top of the \glossaries{} package for easy indexing and glossary printing. +%\noindent The \leipzig{} package indexes and prints all linguistic gloss abbreviations used in a document. It provides a set of macros for standard glossing abbreviations, with options to redefine these or to create new ones. \leipzig{} interfaces with the \glossaries{} package for added functionality. %\end{abstract} % -% \tableofcontents +%\section*{Basic Usage} +%Authors define gloss abbreviations which can be used in a document. (A standard set of abbreviations is pre-defined by \leipzig{}.) These are accessed via `shortcut' macros that take no argument such as |\Nom{}| or |{\Nom}| (short for nominative), which is typeset as {\Nom}. +% +%The abbreviations are indexed in a glossary which can then be printed in an inline or block format using \cs{printglossaries} or \cs{printglosses}. To print an inline glossary, e.g.\ in a footnote, use the schema in~\refp{schema:inline}. + +%\ex\label{schema:inline}|\documentclass{article}|\linebreak +% +%|\usepackage{leipzig}| +% +%|\makeglossaries|\linebreak +% +%|\begin{document}| +% +%| Use at least one macro like| +% +%| {\Nom}.\footnote{\printglossaries} % or \printglosses| +% +%|\end{document}|\xe +% +%The default output looks like the following. (The occasional space before a comma or period is \emph{not} normal behavior, and is due to some clash with the \textsf{doc} class used to typeset the package documentation.) +%\begin{center}\vspace{-\baselineskip}\framebox{\begin{minipage}[t]{\textwidth}% +%Use at least one macro like {\Nom}.\footnote{\printglosses[type=\leipzigtype,style=inline]}% +%\end{minipage}}\end{center} +% +%To print a block glossary, e.g.\ in a manuscript, use package option \hbox{[block]} or \hbox{[mcolblock]}, as in~\refp{schema:leipzigmcolalttree}. The option \hbox{[mcolblock]} is like \hbox{[block]} but prints in a \texttt{multicol} environment (default number of columns~=~2). +% +%\ex\label{schema:leipzigmcolalttree}|\documentclass{article}| +% +%|\usepackage{multicol}|\linebreak % -%\renewcommand{\glossarypreamble}{The \leipzig{} and \glossaries{} package were used to automatically index and print the following gloss abbreviations used in this documentation:\space\gdef\glossarypreamble{}}% -%\renewcommand{\glossarypostamble}{\textsc{\textbf{Note}}: the spaces before punctuation items in this list are abnormal and due to a clash with the \textsf{doc} class used to typset package documentation.\gdef\glossarypostamble{}}% -%\section[Introduction]{Introduction\footnote{\printglossary[style=inline,type=\leipzigtype]}}\label{sec:intro}% +%|\usepackage[mcolblock]{leipzig} % or option: [block]| % -%The {\leipzig} package pre-defines (in \textsf{leipzig.tex}) many of the most common gloss abbreviations (essentially equivalent to the appendix to the Leipzig Glossing Rules \cite{bic08}). They are pre-defined to save the end-user time, and also to encourage standardization. They are called with macros like \verb+\Nom{}+, \verb+\Acc{}+, and \verb+\Dat{}+, which typeset {\Nom}, {\Acc}, and {\Dat}, respectively. These macros are short, mnemonic, and stand out visually when editing interlinear gloss texts (IGTs) in the source code. Additional macros are provided to define new abbreviations and to set global display parameters which affect all glosses. When used in conjunction with the \glossaries{} package, the abbreviation macros are indexed in a glossary. These can then be printed in a list, table, or inline glossary; an example of the latter is in a footnote on this page. +%|\makeglossaries|\linebreak % -%\section{Installation and declaration}\label{sec:install}% +%|\begin{document}| % -%\subsection{Basic package} +%| Use at least one macro like {\Nom}.| % -%Download the \leipzig{} package from CTAN and save it somewhere where \LaTeX{} can find it (usually in \$TEXMF/tex/latex/leipzig/). To use the {\leipzig} package, declare it in the preamble of your document: +%| \printglossaries % or \printglosses| % -%\ex\verb+\documentclass{article}+\linebreak -% \ldots\linebreak -% \verb+\usepackage{leipzig}+\xe +%|\end{document}|\xe % -%\vspace{-1ex} -%\subsection{With \glossaries{}} +%The default output looks like the following. +%\begin{center}\vspace{-\baselineskip}\framebox{\begin{minipage}[t]{\textwidth}% +%Use at least one macro like {\Nom}. +%\printglosses[style=leipzigmcolalttree,type=\leipzigtype] +%\end{minipage}}\end{center} % -%If you want to use \leipzig{} with indexing capabilities, then you will also need to download the \glossaries{} package, v3.02 (2012/05/21) or later. Version 3.02 comes bundled with the \textsf{glossary-inline} package, which is necessary to make a list of abbreviations in a footnote, as is common in linguistics articles. Save it somewhere \LaTeX{} can find it. Run \texttt{latex glossaries.ins} to generate the style files, if need be, and refer to the installation instructions in the \glossaries{} package. +% Block glossary names print in either a chapter header (for classes like \textsf{book} where |\chapter| is defined) and in a section header otherwise, but this default behavior can be changed via the [section] package option. % -%The \glossaries{} package requires v2.5f (2006/11/18) or later of the \textsf{xkeyval} package. This may be a newer version than the version which came bundled with your distribution, so you should download the newest version of \textsf{xkeyval} from CTAN too. +% \clearpage\tableofcontents % -%Once you have both packages installed, you can use the minimal example file \texttt{minimalgls.tex} to test that \glossaries{} is functioning correctly. See chapter~1 of the \glossaries{} package for more information. +%\changes{v1.0}{2013/05/26}{First released version} +%\changes{v0.6}{2012/07/30}{Changed A, P, and S macros to \cs{Aarg}, \cs{Parg}, and \cs{Sarg}, at the suggestion of Benct Philip Jonsson.} +%\changes{v0.5}{2012/05/26}{First documented version (alpha).} % -%\begin{verbatim}(pdf)latex minimalgls + +%\section{Setup}\label{sec:install}% +% +%\subsection{Installation} +%Download the \leipzig{} package from CTAN and save it somewhere where \LaTeX{} can find it (usually in \$TEXMFHOME/tex/latex/leipzig/). +% +%\leipzig{} will automatically load the \glossaries{} package unless you use the \hbox{[noglossaries]} package option. You will need \glossaries{} v3.02 (2012/05/21) or later, because version 3.02 comes bundled with the \textsf{glossary-inline} package, which \leipzig{} relies on for its inline glossary style. +% +%\iffalse The \glossaries{} package requires v2.5f (2006/11/18) or later of the \textsf{xkeyval} package. This may be a newer version than the version which came bundled with your distribution, so you should download the newest version of \textsf{xkeyval} from CTAN too. \fi +% +%If you do not already have {\glossaries}, then download it and save it somewhere \LaTeX{} can find it. Run \texttt{latex glossaries.ins} to generate the style files, if need be. Be sure to run \texttt{texhash} or \texttt{maketexlsr} in terminal after installing both packages. To test whether {\glossaries} was installed correctly, you can use the minimal example file \texttt{minimalgls.tex} that comes bundled in the {\glossaries} package. In terminal or the command shell, run: +% +%\begin{center}\begin{verbatim}pdflatex minimalgls.tex %makeglossaries minimalgls -%(pdf)latex minimalgls -%(pdf)latex minimalgls\end{verbatim} +%pdflatex minimalgls.tex\end{verbatim}\end{center} +% +%\noindent\framebox[\textwidth]{\noindent\vbox{\textbf{Notes:}\begin{compactitem} +%\item \texttt{makeglossaries} takes a filename with \emph{no} \texttt{.tex} extension. +%\end{compactitem}}} +%\smallskip +% +%\texttt{makeglossaries} is a perl script which comes bundled with \glossaries{} and which does some smart business of determining whether to build the glossaries using \texttt{makeindex} or \texttt{xindy}. If your system doesn't recognise the command \texttt{perl} then it's likely you don't have Perl installed. Although it is possible to run \texttt{makeindex} directly instead, this creates more work on your part in setting various parameters, and some options in \glossaries{} may be unavailable. I highly recommend that you download \texttt{perl} and use \texttt{makeglossaries}. For Windows, I recommend \href{Strawberry Perl}{http://strawberryperl.com/}. +% +% If you use TeXWorks or the like for text editing, you can add \texttt{makeglossaries} as a menu option instead of running the script in terminal. See \href{http://tex.stackexchange.com/questions/13152/how-to-makeglossaries-with-texworks}{http://tex.stackexchange.com/questions/13152/how-to-makeglossaries-with-texworks}. +% +%If you have any trouble installing \glossaries{}, refer to the installation instructions in \texttt{glossaries-user.pdf}. If you are daunted by the size of the manual, try starting off with the (much shorter!) guide for beginners (\texttt{glossariesbegin.pdf}). +% +%\subsection{Document structure with \glossaries{}} +%There are \textbf{five} main parts to any document that utilizes \glossaries{}. If you are missing any of these, then your glossaries will not print. +% +%\begin{description} +% \item [1.~Load the package] If you use \textsf{hyperref}, you should load \textsf{hyperref} \emph{before} {\leipzig}, contrary to the normal practice of loading \textsf{hyperref} last. (It's because \leipzig{} loads \glossaries{}, which must be loaded after \textsf{hyperref}.) +% +%\begin{verbatim}\documentclass{article} +%\usepackage{hyperref} +%\usepackage{leipzig}% leipzig loads glossaries\end{verbatim} +% +% \item [2.~Generate the glossaries] Any new glossaries must be defined before |\makeglossaries|. No glossaries are created without this line! +% +%\begin{verbatim}\makeglossaries\end{verbatim} % -%The \leipzig{} package should be loaded after \glossaries{}. The \glossaries{} package comes pre-loaded with many glossary styles, but the inline style must be loaded as a separate package. +% \item [3.~Define glossary entries] Best practice is to define new terms in the preamble after |\makeglossaries|. % -%\ex\verb+\documentclass{article}+\linebreak -%\ldots\linebreak -%\verb+\usepackage{glossaries}+\linebreak -%\verb+\usepackage{glossary-inline}+\linebreak -%\verb+\usepackage{leipzig}+\linebreak -%\verb+\makeglossaries+\linebreak\xe -%The \glossaries{} package is fairly heavyweight, so some useful package options include the following (see section~2.1 of the \glossaries{} user documentation for other package options): +%\begin{verbatim}\newleipzig{verbz}{vbz}{verbalizer}\end{verbatim} % -%\ex\verb+\usepackage[nomain,nostyles]{glossaries}+\xe +% \item [4.~Use the glossary entries] somewhere in your document. +% +%\begin{verbatim}\begin{document} +% Use {\Verbz} or {\Nom}. %{\Nom} pre-defined by leipzig\end{verbatim} +% +% \item [5.~Print the glossaries] |\printglossaries| will print all defined glossaries. |\printglosses| is provided by \leipzig{} and will just print the glossary that holds the gloss abbreviations. +% +%\begin{verbatim}\printglossaries % or \printglosses +%\end{document}\end{verbatim} +%\end{description} +% +%\noindent Once you have those five elements, don't forget to run these commands. (The last run of \texttt{pdflatex} typesets the table of contents, if there is one.) +% +%\begin{center}\begin{verbatim}pdflatex minimalgls.tex +%makeglossaries minimalgls +%pdflatex minimalgls.tex +%pdflatex minimalgls.tex\end{verbatim}\end{center} +% +%\section{Package options}\label{sec:options}% % -%\vspace{-1ex} %\begin{itemize} -%\item \textbf{nomain} - suppresses creation of a main glossary (useful if you are not using a main glossary and are only using the \glossaries{} package to index abbreviations.) -%\item \textbf{nostyles} - prevents the predefined glossary styles from being loaded. If you use this package option then you must load any style you want to use manually with \verb+\usepackage{+\meta{glossary-style}\verb+}+. The |glossary-inline| style is not automatically loaded by \glossaries{} and must be loaded manually in any case. -%\iffalse -%\item \textbf{indexonlyfirst} - if you have many IGTs in your paper, then you will be using a lot of abbreviations. This option causes only the first usage to be indexed. -%\fi +%\item \textbf{[glossaries]} (default) \leipzig{} will load \glossaries{} if it exists (as well as the bundled packages \textsf{glossary-inline}, \textsf{glossary-tree}, \textsf{glossary-mcols}). +%\item \textbf{[noglossaries]} Prevents \glossaries{} from being loaded. This option basically reduces the package to a list of shortcut macros like |{\Acc}| which expand to |\textsc{acc}|, plus a method to create new shortcut macros, plus a switch to control the font. +%\item \textbf{[nostandards]} The set of standard pre-defined glosses from the Leipzig Glossing Rules \cite{bic08} can be used but will be prevented from printing in the glossary. +%\item \textbf{[inline]} (default) The glossary containing the gloss abbreviations will be typeset in an inline style. (It uses the \texttt{inline} style, which \leipzig{} has modified from the \texttt{inline} style in \textsf{glossary-inline.sty}.) +%\item \textbf{[block]} The glossary containing the gloss abbreviations will be typeset in a block style. (It uses the \texttt{leipzigalttree} (alias: \texttt{block}) style, which \leipzig{} has modified from the \texttt{alttree} style in \textsf{glossary-tree.sty}.) +%\item \textbf{[mcolblock]} The glossary containing the gloss abbreviations will be typeset in a multicolumn block format. (It uses the \texttt{leipzigmcolalttree} (alias: \texttt{mcolblock}) style, which \leipzig{} has modified from the \texttt{mcolalttree} style in \textsf{glossary-mcols.sty}.) +%\item \textbf{[leipzignohyper]} (default) Abbreviations created with \cs{newleipzig} will not have hyperlinks to the glossary. +%\item \textbf{[leipzighyper]} Abbreviations created with \cs{newleipzig} will have hyperlinks to the glossary. +%\item \textbf{[glosses]} By default, gloss abbreviations are put into the main glossary. Use this option to separate out gloss abbreviations into a separate glossary (type=leipzig). An alias option \hbox{[leipzig]} is also provided. %\end{itemize} % +%The \leipzig{} package passes all unknown options to \glossaries{}, so you can use any of the \glossaries{} package options as well. Some useful ones are: % -%\subsection{With \textsf{hyperref}} +%\begin{itemize} +%\item \textbf{[nostyles]} Prevents {\glossaries} from loading several pre-defined glossary styles. If you are only using the styles that are defined in \leipzig{}, then you can safely use \hbox{[nostyles]}. If you use this option but still want to use one of \glossaries{}' pre-defined glossary styles, you will have to load the package that contains that style before setting the style, e.g.\ % -%Note that if you have also loaded the \textsf{hyperref} package, then \glossaries{} must be loaded \emph{after} \textsf{hyperref}, contrary to common usage. When \textsf{hyperref} is loaded, each usage of an abbreviation will link to the corresponding glossary entry. If you are using an inline glossary, these hyperlinks will not be very interesting, since they all link to the same page. You can turn them off with the \glossaries{} command |\glsdisablehyper| (but note this will suppress hyperlinks for \emph{all} acronyms and glossary entries, if you have more than one glossary). A minimal preamble declaration would then look like this: +%\begin{verbatim}\usepackage[nostyles]{leipzig} +%\usepackage{glossary-long} +%\setglossarystyle{long} +%\makeglossaries\end{verbatim} % -%\ex\verb+\documentclass{article}+\linebreak -%\ldots\linebreak -%\verb+\usepackage{hyperref}+\linebreak -%\verb+\usepackage{glossaries}+\linebreak -%\verb+\usepackage{glossary-inline}+\linebreak -%\verb+\usepackage{leipzig}+\linebreak -%\verb+\makeglossaries+\linebreak -%\verb+\glsdisablehyper+\linebreak\xe +%\item \textbf{[indexonlyfirst]} - If you have many interlinear glossed examples in your paper, compiling may be slow because every instance of a glossary entry must be written to the glossary. This option causes only the first usage to be written to the glossary. This option affects all glossary entries--not just gloss abbreviations. +%\item \textbf{[acronym]} or \textbf{[acronyms]} Separates acronyms from the main glossary. The acronyms glossary can be printed with |\printacronyms|. +%\item \textbf{[symbols]} Creates a new `Symbols' glossary which can be printed using |\printsymbols|. +%\item \textbf{[toc]} Adds glossaries to the table of contents. +%\item \textbf{[section=\meta{value}]} By default, glossaries begin with a chapter header if you are using a documentclass that defines chapters, else with a section header. You can set this explicitly. If you use section without a value, it means section=section. You can also reset the section type in the document with \cs{setglossarysection}. (Glossaries using the \texttt{inline} styles never begin with a section header.) +%\item \textbf{[nonumberlist]} By default, gloss entries will be followed by a number list that links back to the pages the gloss entries were used on. You can suppress this for all glossaries by using this option. +%\end{itemize} % -%\vspace{-2ex} +%\section{Core functionality} +% The elements discussed in this section work regardless of whether you have loaded \glossaries{} or not. +%\subsection{Defining gloss abbreviations}\label{sec:basic}% % -%\section{Package options}\label{sec:options}% +%The main part of the package provides a method to define new gloss abbreviations and shortcut macros to print the short forms of the abbreviations. These functions work regardless of whether \glossaries{} is loaded or not. +% +%\DescribeMacro{\newleipzig}% +%\DescribeMacro{\renewleipzig}% +%Gloss abbrevations are defined (or re-defined) with \cs{newleipzig} and \cs{renewleipzig}, respectively. For best results, gloss abbreviations should be defined in the preamble after \cs{makeglossaries} and before |\begin{document}|. (The code for \cs{renewleipzig} is courtesy \TeX{}.SX user \textsf{egreg}.) % -%\begin{description} -%\item[glossaries] Using glossary indexing capabilities. Defaults to true when \leipzig{} is loaded after \glossaries{}. -%\item[noglossaries] Turns off glossary indexing capabilities, even when \leipzig{} is loaded after \glossaries{}. -%\item[nostandards] Use this option if you do not want \leipzig{} to print the set of glosses defined in the Leipzig Glossing Rules. Instead it will only print non-standard ones that you define in the preamble with |\newleipzig|. -%\end{description} +%\ex \cs{newleipzig}\texttt{ {} } \oarg{options} \marg{label} \marg{short} \marg{long}\xe +%\ex~\cs{renewleipzig} \oarg{options} \marg{label} \marg{short} \marg{long}\xe % -%\section{Usage}\label{sec:basic}% +% When \glossaries{} is loaded, \cs{newleipzig} defines a new glossary entry using |\newacronym[type=\leipzigtype]|, where \cs{leipzigtype} expands to the glossary that houses the gloss abbreviations (default is \texttt{main}) . % -%\subsection{Abbreviation macros} +%\begin{itemize} +% \item The optional argument \meta{options} is a key=value list which is passed to \cs{newacronym} after \hbox{|[type=\leipzigtype]|}. It is ignored if \glossaries{} is not loaded. A list of recognized keys is in chapter~4 of the \glossaries{} documentation. % -%The abbreviation macros are usually equivalent to the abbrevation itself, so that \verb+\Cop{}+ will typeset \Cop{}, and \verb+\Ins{}+ will typeset \Ins{}, etc. Note that the macros all begin with an uppercase letter. This makes them easier to see in your .tex file, and uppercase macros are less likely to be defined than lowercase ones. These abbreviation macros take no arguments and will gobble a following space, so they require braces. You can type either \verb+\Cop{}+ or \verb+{\Cop}+. +% \item \meta{label} must be a unique label with which to identify the entry. It cannot contain any nonexpandable commands or active characters, nor can it contain numbers. The reason for this restriction is that \leipzig{} uses the label to construct a shortcut macro, so the label must be able to expand to a valid control sequence name. % -%There are a few notable exceptions, where the macro is not equivalent to the abbreviation, because the expected macro was already defined in \LaTeX{}. These are shown in Table~\refp{unexpected}. Additionally, since macro names cannot start with a number, |\First{}| is the abbreviation macro for \First{}, |\Second{}| is the abbreviation macro for \Second{}, and |\Third{}| is the abbreviation macro for \Third{}. +% \item \meta{short} is the short form of the abbreviation. This needs to be lowercase so that |\textsc{}| will work. (You cannot make capital letters into smallcaps with |\textsc{}|.) % +% \item \meta{long} is the long version of the acronym. I recommend also typing this argument in lowercase letters, and using the \glossaries{} package to format the glossary such that the first letter of all long forms are consistently uppercase or lowercase. You may need to specify hyphenation explicitly in the long form using |\-|. +%\end{itemize} % -%\begin{table}[htbp]\centering -%\begin{tabular}[t]{lll}\toprule -% Command & Short & Long\\\midrule -% \verb+\Aarg{}+ & \sc a & agent\\%\iffalse v0.6\fi -% \verb+\Parg{}+ & \sc p & patient\\ %\iffalse v0.6\fi -% \verb+\Sarg{}+ & \sc s & argument of intransitive verb\\ %\iffalse v0.6\fi -% \verb+\First{}+ & \sc 1 & first person\\ -% \verb+\Second{}+ & \sc 2 & second person\\ -% \verb+\Third{}+ & \sc 3 & third person\\\bottomrule +%To redefine a macro, use \cs{renewleipzig} with the \meta{label} of the abbreviation you want to redefine. The \meta{short} and \meta{long} arguments should be the new forms that you want to change to. +% +%\DescribeMacro{\Label}% +%\cs{newleipzig} creates a shortcut macro by capitalizing the first letter of \meta{label} to form \cs{Label}. This format was chosen because it is short and mnemonic, it stands out visually when editing \glspl{igt} in your .tex file, and uppercase macros are less likely to be defined than lowercase ones. Shortcut macros take no arguments and gobble a following space, so they require braces; you can type either |\Label{}| or |{\Label}|.\footnote{If you want to be able to type \cs{Label} without braces, you will need to load the \textsf{xparse} package. \leipzig{} does not load \textsf{xparse} because there are some issues with it, and it remains wholly untested with \leipzig{}. See David Carlisle's explanation: \url{http://tex.stackexchange.com/questions/86565/drawbacks-of-xspace}.} +% +%Shortcut macros print the short form of the abbreviation. If \glossaries{} is loaded, they essentially expand to either |\acrshort{|\meta{label}|}| or |\acrshort*{|\meta{label}|}|, depending on whether they include a link to the glossary or not. If \glossaries{} is not loaded, the macros print the short form of the abbreviation in |\leipzigfont|, which is initialized to |\textsc|. Here is a simple example: +% +%\pex\label{ex:verbz}|\newleipzig{verbz}{vbz}{ver\-ba\-liz\-er}| +%\a creates the shortcut: |\Verbz{}| or |{\Verbz}| +%\a which expands to: \Verbz{} +%\xe +% +%\subsection{Pre-defined abbreviations} +%The {\leipzig} package pre-defines (in \textsf{leipzig.tex}) the gloss abbreviations from the appendix to the Leipzig Glossing Rules \cite{bic08}. These are pre-defined to save the end-user time, and also to encourage standardization within the field. (However, they can be re-defined using \cs{renewleipzig} and the same label that they were originally defined with.) +% +%Whenever possible, the label for the pre-defined abbreviations is the same as the short form. Hence, the shortcut macros are a capitalized version of the short form; i.e.\ |\Cop{}| will typeset \Cop{}, |\Ins{}| will typeset \Ins{}, etc. Exceptions to this rule are given in \autoref{tab:unexpected}. In these cases the label and short form differ because the shortcut macro that would have otherwise been created was either already defined in \LaTeX{} or would have begun with a number. (Macro names in \LaTeX{} cannot begin with a number.) +% +% +%\begin{table}[tb]\centering +% \caption{Unexpected macro names}\label{tab:unexpected}% +%\begin{tabular}[t]{llll}\toprule +% Shortcut & Label & Short & Long\\\midrule +% |\Aarg{}| & aarg & \sc a & agent\\%\iffalse v0.6\fi +% |\Parg{}| & parg & \sc p & patient\\ %\iffalse v0.6\fi +% |\Sarg{}| & sarg & \sc s & argument of intransitive verb\\ %\iffalse v0.6\fi +% |\First{}| & first & \sc 1 & first person\\ +% |\Second{}| & second & \sc 2 & second person\\ +% |\Third{}| & third & \sc 3 & third person\\\bottomrule % \end{tabular} -% \caption{Unexpected macro names}\label{unexpected}% %\end{table} % %The package also defines macros for common person-number combinations, like \Fsg{} and \Tpl{}. Abbreviations for first person begin with `F' (not `1'), abbreviations for second person begin with `S' (not `2'), and abbreviations for third person begin with `T' (not `3'). These abbreviations are shown in Table~\refp{persons}. % -%\begin{table}[htbp]\centering +%\begin{table}[tb]\centering +% \caption{Abbreviations for persons and number}\label{persons}% %\begin{tabular}[t]{ll@{\qquad}ll@{\qquad}ll}\toprule -% \verb+\Fsg{}+ & \sc 1sg & \verb+\Ssg{}+ & \sc 2sg & \verb+\Tsg{}+ & \sc 3sg\\ -% \verb+\Fdu{}+ & \sc 1du & \verb+\Sdu{}+ & \sc 2du & \verb+\Tdu{}+ & \sc 3du\\ -% \verb+\Fpl{}+ & \sc 1pl & \verb+\Spl{}+ & \sc 2pl & \verb+\Tpl{}+ & \sc 3pl\\ +% |\Fsg{}| & \sc 1sg & |\Ssg{}| & \sc 2sg & |\Tsg{}| & \sc 3sg\\ +% |\Fdu{}| & \sc 1du & |\Sdu{}| & \sc 2du & |\Tdu{}| & \sc 3du\\ +% |\Fpl{}| & \sc 1pl & |\Spl{}| & \sc 2pl & |\Tpl{}| & \sc 3pl\\ % \bottomrule\end{tabular} -% \caption{Abbreviations for persons and number}\label{persons}% %\end{table} % -%\subsection{Create new abbreviations} +%\makeatletter\leipzigdonotindextrue +%The macros that print the person and number abbreviations were defined using \cs{newcommand}, not \cs{newleipzig}, as in~\refp{ex:fusional}. The reason is that each glossary entry should correspond to one component of a fusional gloss, not the entire fusional gloss itself. That way a glossary will have entries like {\First}, {\Second}, {\Third}, {\Sg}, {\Du}, {\Pl}, etc., but \emph{not} {\Fsg}, {\Fdu}, {\Fpl}, {\Ssg}, {\Sdu}, etc. % -%\DescribeMacro{\newleipzig}% -%Create new abbreviations with the \verb+\newleipzig+ command, which requires three arguments. +%\pex\label{ex:fusional}\a|\newleipzig{first}{1}{first person} % {\First} prints 1| +%\a|\newleipzig{sg}{sg}{singular}|\texttt{ {} {} {} {} {} }| % {\Sg} prints| {\Sg} +%\a|\newcommand{\Fsg}{{\First}{\Sg}}|\texttt{ {} {} }| % {\Fsg} prints| {\Fsg}\xe +% +%This strategy can be used for any fusional gloss. I usually use a command name that begins with a capital letter like the shortcut macros. +%\leipzigdonotindexfalse\makeatother % -%\ex \verb+\newleipzig+ \oarg{options} \marg{macro} \marg{short} \marg{long}\xe +%\iffalse +%As an example, \Fdui{} is a combination of abbreviations for first person, dual number, and inclusivity. Abbreviations for first person (|\First{}|) and dual number (|\Du{}|) are already defined in \texttt{leipzig.tex}, so \Inc{} is the only part which still needs to be defined. It is generally useful to then create a shortcut macro (with |\newcommand|) for the fusional gloss which will call the abbreviations of the various parts. +% +%\ex|\newleipzig{inc}{inc}{inclusive}|\newline +%|\newcommand{\Fdui}{{\Fdu}.{\Inc}}%|\newline +%\ldots the |\Fdui{}| morpheme\ldots |%| Prints \Fdui{}.\xe +%\fi % -% The optional argument \meta{options} is a key=value list which is passed to \glossaries{} if it is loaded. A list of recognized keys is in chapter~4 of the \glossaries{} documentation. +%\subsection{Font and display} +%\DescribeMacro{\leipzigfont} +%The short form of the abbreviation is typeset using \cs{leipzigfont}, which takes the short form as its only argument. This is initialized to expand to |\textsc{#1}|, but you can always re-define it. For instance, to print all short forms in an uppercase italic font, use: % -%The first argument \meta{macro} should be the macro name with no backslash in front. The package will capitalize the first letter of \meta{macro} and use the result as the macroname. The second argument \meta{short} is the short abbreviation. This needs to be lowercase so that \texttt{\textbackslash textsc\{\}} will work. (You cannot make capital letters into smallcaps with \texttt{\textbackslash textsc\{\}}.) The third argument \meta{long} is the long version of the acronym. I also recommend typing this argument in lowercase, and using the \glossaries{} package to format the glossary such that all long forms are consistently uppercase or lowercase. This code: +%\ex|\renewcommand{\leipzigfont}[1]{\textit{\MakeUppercase{#1}}}|\xe % -%\ex \verb+\newleipzig{vblz}{vb}{verbalizer}+\xe -%\noindent creates a macro \verb+\Vblz{}+ which will typeset \Vblz{} when used. +%\renewcommand{\leipzigfont}[1]{{\textit{\MakeUppercase{#1}}}}% +%This can occur anywhere in your document and it affects the short forms of of any following abbreviations, e.g.\ further instances of |{\Verbz}| from~\refp{ex:verbz} will expand to \Verbz{}. +%\renewcommand{\leipzigfont}[1]{\textsc{#1}}% % -%\paragraph{Fusional gloss abbreviations} +%Note that the name of each glossary entry in the glossary will also be printed using the final redefinition of \cs{leipzigfont}. You can redefine \cs{glsnamefont} to control how glossary names are displayed. See \autoref{printglossary} for more information on glossary display. % -%For gloss abbreviations that are fusional, or combinations of several different grammatical glosses, you should use |\newleipzig| for each individual part. As an example, \Fdui{} is a combination of abbreviations for first person, dual number, and inclusivity. Abbreviations for first person (|\First{}|) and dual number (|\Du{}|) are already defined in \texttt{leipzig.tex}, so \Inc{} is the only part which still needs to be defined. It is generally useful to then create a shortcut macro (with |\newcommand|) for the fusional gloss which will call the abbreviations of the various parts. I usually use a command name that mirrors the abbreviations by beginning with a capital letter. +%\section{Abbreviation display with \glossaries{}}\label{sec:moredisplay} % -%\ex|\newleipzig{inc}{inc}{inclusive}|\newline -%|\newcommand{\Fdui}{{\Fdu}.{\Inc}}%|\newline -%\ldots the |\Fdui{}| morpheme\ldots |%| Prints \Fdui{}.\xe +%If \glossaries{} is loaded, there are many more options for display refinement. % -%This is actually how the person-number combinations like |\Tpl{}| are defined in \leipzig{}. The reason is so that the glossary will contain the individual components (\First{} = first person, \Sg{} = singular) instead of all of the various combinations thereof. +%\subsection{Acronym style} % -%\subsection{Redefine existing abbreviations} +%\cs{newleipzig} is built on \cs{newacronym} from the \glossaries{} package. The \glossaries{} package allows you to set an acronym display style. This is a global setting, and it affects all acronyms that are defined using \cs{newacronym} (not only gloss abbreviations). % +%\DescribeMacro{\setacronymstyle}\leipzig{} sets a custom acronym style called \texttt{long-lpz-short} that is identical to the \texttt{long-short} style defined in \glossaries{}, except that the short form of the abbreviation is printed using \cs{firstleipzigfont} (on first use) and \cs{leipzigfont} (on subsequent uses). It is set in the package using: % -%\subsection{Display parameters}\label{intext}% +%\ex|\setacronymstyle{long-lpz-short}|\xe +% +%You can use the same command in the preamble to set a different acronym style. However, this style will affect all acronyms, even if they are not gloss abbreviations. See the \glossaries{} user manual for details. +% +%\DescribeMacro{\gls}Using |\gls{|\meta{label}|}| instead of |\Label| will display the abbreviation according to the acronym style, which may be useful in-text when discussing particular grammatical glosses. The following example uses the abbreviation defined in~\refp{ex:verbz}. +% +%\pex\a|\gls{verbz} prints:| \gls{verbz} |% first time use| +%\a|\gls{verbz} prints:| \gls{verbz} |% subsequent uses| +%\xe % -%\iffalse -%\paragraph{Font display} -%\DescribeMacro{\leipzigfont} %\DescribeMacro{\firstleipzigfont} -%By default, abbreviations are printed in smallcaps. You can control the style of how abbreviations are printed on first use or on subsequent uses with |\firstleipzigfont|\footnote{This macro only has an effect when \glossaries{} is loaded.} and |\leipzigfont|. However, these must be defined \emph{before} any |\newleipzig| commands that should conform to this style. The style for a certain abbreviation is set when the glossary entry is defined. In practice this means that you cannot change styles partway through a paper, and that you should declare |\firstleipzigfont| and |\leipzigfont| before you load \texttt{leipzig.tex} (or declare any other abbreviations). The following preamble declaration makes the first use of each abbreviation bold. -% -%\begin{verbatim}\usepackage{glossaries} -%\usepackage{glossary-inline} -%\glossarystyle{inline} -%\usepackage{leipzig} -%\renewcommand{\firstleipzigfont}[1]{\textsc{\textbf{#1}}} -%\loadglsentries{leipzig}% or \input{leipzig.tex} -%\makeglossaries\end{verbatim} -%\fi +%The command \cs{firstleipzigfont} controls how the short form is displayed the first time it is displayed using \cs{gls} or other \cs{gls}-like commands. It is initialized to \cs{leipzigfont}, but can be changed in the preamble. For example, the command in~\refp{ex:firstlpzfont} will make the short form in the first usage be displayed in bold and \cs{leipzigfont}. +% +%\glsreset{verbz}\bgroup\renewcommand{\firstleipzigfont}[1]{\textbf{\leipzigfont{#1}}}% +%\pex\label{ex:firstlpzfont}|\renewcommand{\firstleipzigfont}[1]{|% +% +%| \textbf{\leipzigfont{#1}}}| +%\a|\gls{verbz} prints:| \gls{verbz} |% first time use| +%\a|\gls{verbz} prints:| \gls{verbz} |% subsequent uses| +%\xe\egroup +% +%\DescribeMacro{\glsreset(all)} +%\DescribeMacro{\glsunset(all)}|\gls{}| and other |\gls|-like commands access and modify the first use flag, which determines if the abbreviation has been used before or not. To reset the first use flag so that the next use of |\gls| will diplay the abbreviation as if on first use, use |\glsreset{|\meta{label}|}| for an individual abbreviation, or |\glsresetall| to reset all abbreviations. There are also analogous |\glsunset{|\meta{label}|}| and |\glsunsetall| commands, which cause |\gls| to never use the first use display. See chapter~14 of the \glossaries{} user documentation. % -%\paragraph{Gloss display} -%The command |\newleipzig| not only creates a new definition entry, but also creates a mnemonic macro like |\Vblz{}|, which simply expands to |\gls{vblz}|. You can still access the short, long, or full forms of the abbreviation without affecting the first use flag using macros like |\acrshort|, |\Acrlong|, or |\ACRfull| (see chapter~13 of the \glossaries{} documentation for a list). A few examples are shown in table~\refp{acrabbrv}. +%Besides |\gls|, there are other acronym-specific macros to print components of the acronym without modifying the first use flag. These can take the same optional arguments as other |\glstext|-like commands. A few examples are shown in \autoref{tab:acrabbrv}; see Chapter~13 of the \glossaries{} documentation for more options. % -%\begin{table}[htbp] +% +%\begin{table}[tbp] % \centering +% \caption{Short, long, and full acronym formats} +% \label{tab:acrabbrv} % \begin{tabular}[t]{ll}\toprule -%Command & Prints\\ -%|\acrshort{vblz}| & \acrshort{vblz}\\ -%|\Acrshort{vblz}| & \Acrshort{vblz}\\ -%|\ACRshort{vblz}| & \ACRshort{vblz}\\ -%|\acrlong{vblz}| & \acrlong{vblz}\\ -%|\Acrlong{vblz}| & \Acrlong{vblz}\\ -%|\ACRlong{vblz}| & \ACRlong{vblz}\\ -%|\acrfull{vblz}| & \acrfull{vblz}\\ -%|\Acrfull{vblz}| & \Acrfull{vblz}\\ -%|\ACRfull{vblz}| & \ACRfull{vblz}\\ +%Command & Prints\\\midrule +%|\acrshort{verbz}| & \acrshort{verbz} \\ +%|\Acrshort{verbz}| & \Acrshort{verbz}\\ +%|\ACRshort{verbz}| & \ACRshort{verbz}\\ +%|\acrlong{verbz}| & \acrlong{verbz}\\ +%|\Acrlong{verbz}| & \Acrlong{verbz}\\ +%|\ACRlong{verbz}| & \ACRlong{verbz}\\ +%|\acrfull{verbz}| & \acrfull{verbz}\\ +%|\Acrfull{verbz}| & \Acrfull{verbz}\\ +%|\ACRfull{verbz}| & \ACRfull{verbz}\\ % \bottomrule\end{tabular} -% \caption{Short, long, and full formats} -% \label{acrabbrv} %\end{table} % -%\DescribeMacro{\acrfullformat} -%The format of |\acrfull| defaults to \textit{long-form} (\textit{short}). You can change this by redefining |\acrfullformat| in your preamble (argument \#1 is the long form and argument \#2 is the short form): +%Any modifications to \cs{firstleipzigfont} will affect any of the \cs{acrfull}-type macros; \cs{acrshort}-type macros will be unaffected. The shortcut macros like |{\Verbz}| are based on |\acrshort|, so \cs{firstleipzigfont} will not affect them. % -%\ex\verb+\renewcommand{\acrfullformat}[2]{#2\space(#1)}+\xe +%\subsection{Hyperlinks to the glossary} % -%\renewcommand{\acrfullformat}[2]{#2\space(#1)}\noindent changes the order so that |\acrfull{vblz}| prints: \acrfull{vblz}.\renewcommand{\acrfullformat}[2]{#1\space(#2)}% +%If you load the \textsf{hyperref} or \textsf{html} packages prior to loading the \glossaries{} package, the |\gls|-like and |\glstext|-like commands will automatically have hyperlinks to the relevant glossary entry, unless the \texttt{hyper} option has been switched off. There are many ways to affect the \texttt{hyper} option. % -%\section{Printing the glossary}\label{printglossary}% +%\begin{center}\framebox[\textwidth]{\noindent\vbox{\textbf{Note:} if you use \textsf{hyperref}, then \leipzig{} must be loaded \emph{after} \textsf{hyperref}.}}\end{center} % -%\leipzig{} piggybacks on the \glossaries{} package, which allows multiple glossaries and lists of abbreviations with indexing capabilities. The command |\newleipzig| secretly calls |\newacronym| of the \glossaries{} package and loads the acronym into the glossary type called by |\leipzigtype| (which defaults to \texttt{leipzig}, a glossary which is pre-defined by \leipzig{}). +%\DescribeMacro{\glsdisablehyper} +%\DescribeMacro{\glsenablehyper} +% To disable or enable all hyperlinks to glossaries, use \cs{glsdisablehyper} or \cs{glsenablehyper}. The effect can be localised by placing the commands within a group. % -%\subsection{Inline glossaries} -%\DescribeMacro{\printglossary} -%Print the glossary using |\printglossary| anywhere in the document, but usually in the first footnote. You must specify the glossary style and type: +%\DescribeMacro{[nohypertypes]} +%To disable hyperlinks only for certain glossaries, use the package option (from \glossaries{}) \hbox{[nohypertypes]}. This is a key that take a list of comma-separated glossary names as a value. Make sure you enclose the value in braces if it contains any commas. The values must be fully expanded, so something like \hbox{|[nohypertypes=\leipzigtype]|} \emph{won't} work. Instead use \hbox{|[nohypertypes=main]|} if the \hbox{[glosses]} option has not been used, or \hbox{|[nohypertypes=leipzig]|} if the \hbox{[glosses]} option has been used. Instead of or in addition to the package option \hbox{[nohypertypes]}, you can also use |\GlsDeclareNoHyperList{|\meta{list}|}|. % -%\ex|\footnote{\printglossary[style=inline,type=\leipzigtype]}|\xe +%\DescribeMacro{[nohyperfirst]} +%To disable hyperlinks only on the first use, use the package options (from \glossaries{}) \hbox{[nohyperfirst]}. This is a key that take a list of comma-separated glossary names as a value. Make sure you enclose the value in braces if it contains any commas. % -%To build the glossary, you need to \LaTeX{} the document once, so that \glossaries{} can index all abbreviations used and write them to an external file. Then run |makeglossaries| to build the glossary, and \LaTeX{} twice more to print it and format it. See chapter~1 of the \glossaries{} documentation for more information. +%\DescribeMacro{\gls*} +%\DescribeMacro{\gls+} +%The |\gls|-like and |\glstext|-like commands all take a first optional argument that is a comma-separated list of \meta{key}=\meta{value} options, including \texttt{hyper=false} and \texttt{hyper=true}. They also have a star-variant (e.g.\ |\gls*|) which uses \texttt{hyper=false}, and a plus-variant (e.g.\ |\gls+|) which uses \texttt{hyper=true}. These optional arguments override global settings unless the hyperlinks have been suppressed using \cs{glsdisablehyper}. % -%\begin{verbatim}(pdf)latex myfile.tex -%makeglossaries myfile -%(pdf)latex myfile.tex -%(pdf)latex myfile.tex\end{verbatim} +%\DescribeMacro{\leipzighypertrue} +%\DescribeMacro{\leipzighyperfalse} +%Regardless of the global settings you use for hyperlinks in |\gls|-like or |\glstext|-like entries, the shortcut macros like |\Label| are defined by default to not link to the glossary. Use the package option \hbox{[leipzighyper]} to make shortcut macros link to the glossary. You can also switch hyperlinks on and off for particular glosses by using |\leipzighypertrue| or |\leipzighyperfalse| in the preamble \emph{before} you define the abbreviation with \cs{newleipzig}. % -%\DescribeMacro{\glsinlineshortlongseparator} -%\DescribeMacro{\glsinlineseparator} -%\DescribeMacro{\glspostinline} -%\indent See the glossary in the footnote on the first page of this documentation for the default settings of the glossary. Short and long forms of abbreviations are separated by an equals sign, glossary entries are separated by a comma, and the glossary ends in a period. You can change them by using renewcommand sometime before |\printglossaries|: +%\subsection{Explicitly formatting individual abbreviations}\label{sec:format}% +% +%Occasionally a subset of grammatical glosses should be typeset in some font other than smallcaps (or whatever |\leipzigfont| has been (re)defined to). For instance, when number and gender markers are frequent, some authors use non-capitalized shortened forms like 1s instead of 1\textsc{sg} for first singular person. The optional argument to \cs{(re)newleipzig} can be used to set the short form explicitly with a font. (The repeated entries in the glossary are, again, \emph{not} normal, and is probably due to some clash with the \textsf{doc} program used to typeset the documentation.) + +%\iffalse meta-comment NW: singular prints twice in this dictionary?\fi +% +%\pex\label{ex:singular}|\renewleipzig[short={\glstextup{s}}]{sg}{s}{singular}| +%\makeatletter\leipzigdonotindextrue +%\renewleipzig[short={\glstextup{s}}]{sg}{s}{singular}% +%\a|{\Sg} prints:| {\Sg} +%\a|{\Fsg} prints:| {\Fsg} +%\a Glossary looks like: \bgroup\renewcommand{\glossarypreamble}{}\printglosses\egroup +%\renewleipzig{sg}{sg}{singular}% +%\leipzigdonotindexfalse\makeatother\xe +% +%The definition in~\refp{ex:singular} sets the short form of the singular abbreviation to a lowercase upright s. All short forms are printed in \cs{leipzigfont}, which is initialized to \cs{textsc}. The \glossaries{}-internal \cs{glstextup} is used to cancel the effect of that \cs{textsc}. This defaults to \cs{textulc}, if defined, otherwise \cs{textup}. This will affect any command which calls |{\Sg}|, such as the definition for first singular person in |{\Fsg}| (\autoref{persons}). Setting the short form explicitly will also determine how the abbreviation is displayed in the glossary, because the glossary prints the \texttt{name} field of the glossary entry, which defaults to be the same as the \texttt{short} field. +% +%The optional argument to \cs{re(new)leipzig} can also be used to explicitly set the name and description of a gloss abbreviation, which is useful if these should have a different form than the short and long form in the text. For example, say that you are glossing a Bantu language and you want to identify class markers in the \glspl{igt} with \Cl{1}, \Cl{2}, \Cl{3}, etc. Furthermore, you want the glossary to display \Cl{\#}, so that it is clear that {\Class} is always followed by a number. Then you could set the fields as in~\refp{ex:bantu1}. +% +%\ex\label{ex:bantu1}|\newleipzig[%| +% +%| name={c\#},%| +% +%| description={class marker (\# = class number)}|% +% +%|]{class}{c}{class marker}|\xe +% +%This defines an abbreviation macro |{\Class}|, which prints the short form {\Class}. The short (\acrshort{class}) and long (\acrlong{class}) forms are called in-text via commands like |\acrfull|,\footnote{If you specify the name field, then \textbackslash\texttt{gls} will no longer print the long and short forms. Use \textbackslash\texttt{acrfull} instead.} but the glossary entry will be printed with the name (\glsname{class}) and description (\glsdesc{class}) fields. An example is shown in~\refp{ex:bantu2}. +% +%\ex\label{ex:bantu2}|Use \acrfull{class} or {\Class} in| +% +%| document.\footnote{\printglossaries} % or \printglosses|\xe +% +%The default output looks like the following. +% +%\glsreset{class} +%\begin{center}\vspace{-\baselineskip}\framebox{\begin{minipage}[t]{\textwidth}% +%Use \acrfull{class} or {\Class} in document.\footnote{\printglosses[type=bantu,style=inline]}% +%\end{minipage}}\end{center} +% +%\section{Displaying the glossary}\label{printglossary}% +% +%\iffalse \cs{makeglossaries} goes in the preamble after defining new glossaries (if any) and before defining new glossary entries, and one of \cs{printglossaries} or \cs{printglosses} . This command creates a customised style file (with extension .ist for use with \texttt{makeindex}, or .xdy for use with \texttt{xindy}) and ensures that glossary entries are written to the appropriate output files. If you omit \cs{makeglossaries} none of the glossary files will be created. +% +%To build the glossary, you need to pdf\LaTeX{} the document once, so that \glossaries{} can index all abbreviations used and write them to an external file. Then run |makeglossaries| FILENAME (no extension) to build the glossary, pdf\LaTeX{} again to print the glossary. (Run pdf\LaTeX{} a second time if you have a Table of Contents.) +%\fi +% +%\DescribeMacro{\printglossaries}% +%\DescribeMacro{\printglosses}% +%To display the glossaries, put \cs{printglossaries} (or the \leipzig{}-defined \cs{printglosses}) in your document where you would like the glossaries to display. \cs{printglossaries} prints all glossaries in the order they were defined, while \cs{printglosses} prints only the \cs{leipzigtype} glossary. + +%\subsection{Glossary style} +%The style of the \cs{leipzigtype} glossary can be controlled in two ways. % -%\ex|\renewcommand{\glsinlineseparator}{,\space}|\newline -%|\renewcommand{\glsinlineshortlongseparator}{$\sim$}|\newline -%|\renewcommand{\glspostinline}{}|\xe% -%\renewcommand{\glsinlineseparator}{,\space}% -%\renewcommand{\glsinlineshortlongseparator}{$\sim$}% -%\renewcommand{\glspostinline}{}% -%Please note that the command |\glsinlineshortlongseparator| is not defined in the \glossaries{} package, but only by the \leipzig{} package. If the |glossary-inline| style is loaded, then \leipzig{} redefines |theglossary| environment, where the glossary is printed, to include this functionality. +%\DescribeMacro{[mcolblock]} +%\DescribeMacro{[block]} +%\DescribeMacro{[inline]} +%The simplest is to use one of three \leipzig{} package options: \hbox{[mcolblock]} sets the \texttt{leipzigmcolalttree} style, \hbox{[block]} sets the \texttt{leipzigalttree} style, and \hbox{[inline]} sets the \texttt{inline} style. (The \texttt{inline} style is used by default if no options are specified.) Using a package option ensures that the |\leipzigtype| glossary will display using the intended style regardless of whether you use |\printglossaries| or |\printglosses|. % -%\DescribeMacro{\glsnamefont} -%The abbreviations within the glossary are formatted with |\glsnamefont|; \leipzig{} uses smallcaps by default. +%You can also specify the style in an optional argument to |\printglosses| (or any of the |\printglossary| commands). For example, the code in~\refp{ex:glossesblock} will print just the |\leipzigtype| glossary and will use the block style. If you want to use your own style defined via \cs{newglossarystyle}, then you \emph{must} use this method. % -%\ex|\renewcommand{\glsnamefont}[1]{\textbf{#1}}%|\xe -%\renewcommand{\glsnamefont}[1]{\textbf{#1}}% -%\renewcommand*{\glsgroupheading}[1]{}% -%\renewcommand*{\glsgroupskip}{}% +%\ex\label{ex:glossesblock}|\printglosses[style=block] % same as [style=leipzigalttree]|\xe % +%If you have multiple glossaries (e.g.\ glossaries other than gloss abbreviations), the style of the other glossaries is controlled in the ``normal'' fashion for the \glossaries{} package: either use \cs{setglossarystyle} before \cs{makeglossaries}, or you can use the package option \hbox{[style=\meta{style}]}. The latter option only works for styles that are pre-loaded by \glossaries{}. See \autoref{sec:multiple} for more information on defining multiple glossaries. +% +%\subsection{Display options for all styles} %\DescribeMacro{\leipzigname} +%To change the name of the glossary that houses the gloss abbreviations, redefine \cs{leipzigname}. It defaults to `Abbreviations', as below. +% +%\ex|\renewcommand{\leipzigname}{Abbreviations}|\xe% +% +%The \cs{leipzigname} is used in |\glossarysection|, which is called just before the glossary itself. (Note that |\glossarysection| is redefined to print nothing in the \texttt{inline} style.) +% +%\DescribeMacro{\glossarypreamble} +%Information can be added to the start of the glossary (after the glossary name and before the main body of the glossary) by redefining \cs{glossarypreamble}. For example: +% +%\ex|\renewcommand{\glossarypreamble}{%| +% +%| Abbreviations are as follows:}|\xe +% +%\DescribeMacro{\glossarypostamble} +%There is an analogous command which prints at the end of each glossary called \cs{glossarypostamble}. +% +%\DescribeMacro{\ifleipzigdesccapitalize} By default the description for gloss abbreviations in the glossary is not capitalized. It will print with whatever case you used to define it. If you would like to instead force-capitalize the descriptions, put \cs{leipzigdesccapitalizetrue} in your preamble. This will only affect glossaries that are displayed with the styles \texttt{inline}, \texttt{block} (\texttt{leipzigalttree}), or \texttt{mcolblock} (\texttt{leipzigmcolalttree}). +% +%\DescribeMacro{\ifleipzignonumbers} By default abbreviations in the \cs{leipzigtype} glossary will not have a list of page numbers with links back to the pages where the abbreviation was used. If you would like this feature, put \cs{leipzignonumberstrue} in your preamble. This will only affect the \cs{leipzigtype} glossary. +% +%\DescribeMacro{\ifglsnogroupskip} By default there is no vertical space between groups of abbreviations, where each group is the set of gloss abbreviations that begin with the same letter. (Note that this conditional is set to true for any other defined glossary.) To print a vertical space between groups of abbreviations, put \cs{glsnogroupskiptrue} in your preamble. This will affect all glossaries. +% +%\DescribeMacro{\ifglsnopostdot} By default there is no final period at the end of descriptions in the \cs{leipzigtype} glossary. To print final periods, put \cs{glsnopostdotfalse} in your preamble. This will affect all glossaries. +% +%\subsection{Options to modify pre-defined styles} +%\subsubsection{Inline glossaries} +%\leipzig{} loads the \texttt{glossary-inline} package, which comes bundled with \glossaries{}. This package defines an inline glossary style, which \leipzig{} then redefines to look like a style often used in linguistics papers. This style is set by default when you load \leipzig{}, or by using the \hbox{[inline]} package option. +% %\DescribeMacro{\glossarysection} -%The name of the gloss abbreviations glossary defaults to `Abbreviations' and is printed as the first argument in |\glossarysection|, which defaults to print nothing in \leipzig{}. The name is controlled by |\leipzigname|, so to change the name you can redefine |\leipzigname|: +% Note that \texttt{inline} defines \cs{glossarysection} to print nothing. Therefore, if you set this style for all glossaries by using |\setglossarystyle|\linebreak[1]|{inline}|, then no glossaries will have a glossary section header. +% +%\begin{verbatim}\renewcommand*{\glossarysection}[2][]{}\end{verbatim} +% +%\DescribeMacro{\glossaryheader} +%\DescribeMacro{\glsgroupheading} +%\DescribeMacro{\glsgroupskip}% +%These commands control what to print at the beginning of the the glossary, what to print at the beginning of a group, and how much space to print between groups. Groups divide a glossary into groups, e.g.\ based on the first letter of the acronym (all `A's grouped together, all `B's grouped together, etc.) It is not generally desired for gloss abbreviations unless the list is very long. These three commands are all initialized to do nothing: +% +%\begin{verbatim}\renewcommand*{\glossaryheader}{} +%\renewcommand*{\glsgroupheading}[1]{} +%\renewcommand*{\glsgroupskip}{}\end{verbatim} +% +%\DescribeMacro{\glsinlineseparator} +%\DescribeMacro{\glsinlinesubseparator} +%Each full glossary entry is separated by a comma and a space, regardless of whether that entry is a a subentry (linked to a parent entry) or not. \cs{glsinlineseparator} controls the separator between (parent) entries, and \cs{glsinlinesubseparator} controls the separator between child entries. The defaults are as follows: +% +%\begin{verbatim}\renewcommand*{\glsinlineseparator}{,\space} +%\renewcommand*{\glsinlinesubseparator}{,\space}\end{verbatim} +% +%\DescribeMacro{\glsinlineparentchildseparator} +%\DescribeMacro{\glsinlinepostchild} +%\indent A set of child entries may be linked to a parent entry by setting \hbox{|[parent=|\meta{label}|]|} in the optional argument given to \cs{(re)newleipzig}. The child or children entries will be grouped together and follow the parent entry. For the inline glossary style, the parent and first child are separated by \cs{glsinlineparentchildseparator} and the last child is followed by \cs{glsinlinepostchild}. The defaults are: +% +%\begin{verbatim}\renewcommand*{\glsinlineparentchildseparator}{:\space}% +%\renewcommand*{\glsinlinepostchild}{}%\end{verbatim} +% +%\DescribeMacro{\glspostinline} +%The entire inline glossary is concluded with \cs{glspostinline}. This is initialized to print a period and a space. Default: +% +%\begin{verbatim}\renewcommand*{\glspostinline}{.\space}\end{verbatim} +% +%\DescribeMacro{\glsinlinedescformat} +%\DescribeMacro{\glsinlinesubdescformat} +%\DescribeMacro{\glsinlineemptydescformat} +%Short and long forms of abbreviations are separated by \cs{glsinlinedescformat}. The default is to print an equals sign with small spaces on either side, and to encourage linebreaks \emph{after} the equals sign so that new lines do not begin with an equals sign. The short and long forms of child entries are separated by \cs{glsinlinesubdescformat}, which is defined the same as \cs{glsinlinedescformat}. Finally,\cs{glsinlineemptydescformat} controls what happens if there is no description at all. Defaults: +% +%\begin{verbatim}\renewcommand*{\glsinlinedescformat}[3]{\,=\,\linebreak[1]##1} +%\renewcommand*{\glsinlinesubdescformat}[3]{\,=\,\linebreak[1]##1} +%\renewcommand*{\glsinlineemptydescformat}[2]{}\end{verbatim} +% +%\DescribeMacro{\glsinlinenameformat} +%\DescribeMacro{\glsinlinesubnameformat} +%The name of entries and subentries prints without extra formatting, which means it will print using \cs{leipzigfont}. You could change this behavior by redefining \cs{glsinlinenameformat} and \cs{glsinlinesubnameformat}. +% +%\begin{verbatim}\renewcommand*{\glsinlinenameformat}[2]{\glstarget{##1}{##2}} +%\renewcommand*{\glsinlinesubnameformat}[2]{\glstarget{##1}{##2}\end{verbatim} +% +%\subsubsection{Block glossaries}\label{sec:block} +% +%\leipzig{} defines the styles \texttt{leipzigaltree} and \texttt{leipzigmcolaltree} for block glossaries. These names are cumbersome, so the aliases \texttt{block} and \texttt{mcolblock} are also provided. These two styles are based on \texttt{alttree} and \texttt{mcolalttree}, from the \textsf{glossary-tree} and \textsf{glossary-mcols} packages, respectively, both of which come bundled with \glossaries{}. They are identical except that \texttt{leipzigmcolalttree} sets the glossary in a \texttt{multicol} environment. These styles can be easily set for the \cs{leipzigtype} glossary by using the \hbox{[block]} or \hbox{[mcolblock] }package options, or by setting the style for individual glossaries, e.g.: +% +%\ex|\printglosses{(mcol)block}|\xe +% +%\DescribeMacro{\glsmcols} +%The number of columns for \texttt{leipzigmcolalttree} is two by default, but this can be changed by redefining \cs{glsmcols}. (Note that \textsf{multicol} will not accept a number less than two.) +% +%\ex|\renewcommand*{\glsmcols}{2}|\xe % -%\ex|\renewcommand{\leipzigname}{My new glossary header}|\linebreak -%|\renewcommand*{\glossarysection}[2][]{\textit{#1}:\space}%|\xe% -%\renewcommand{\leipzigname}{My new glossary header} -%\renewcommand*{\glossarysection}[2][]{\textit{#1}:\space}% -%Then I will re-print the glossary in this footnote\footnote{\printglossary[type=\leipzigtype,style=inline] does not end in a period, to illustrate a change from the default}, using the parameters redefined above. Compare this glossary to that on the first page to see the differences. +%\DescribeMacro{\glsfindwidesttoplevelname} +%\DescribeMacro{\glssetwidest}\indent The indentation for the description at each level is as wide as the widest abbreviation defined in \leipzig{}, which happens to be \textsc{compl}. You can set it explicitly by redefining \cs{glssetwidest} in the preamble. This command sets the indentation to the width of the text in its argument. % -%Here is the code I used to print that footnote: +%\ex|\glssetwidest{xxxxxx}|\xe % -%\ex\texttt{...in this footnote\textbackslash footnote\{\textbackslash printglossary[type=\textbackslash leipzigtype, style=inline]does not end in a period, to illustrate a change from the default\}, using the...}\xe +%Alternatively, you can calculate the widest abbreviation name by passing a list of glossary names to \cs{glsfindwidesttoplevelname}. If the optional argument is omitted, all glossaries are assumed. % -%\subsection{Block glossaries} +%\pex\a|\glsfindwidesttoplevelname % or| +%\a|\glsfindwidesttoplevelname[main,leipzig]|\xe % -%\renewcommand{\leipzigname}{Abbreviations} -%\renewcommand{\glossarypreamble}{} -%\renewcommand{\glsnamefont}[1]{\textsc{\bfseries #1}} -%\renewcommand*{\glossarysection}[2][]{\section{#1}} -%\renewcommand{\glspostdescription}{} +%\DescribeMacro{\glspostnamespace} +%The glossary names are followed by \cs{glspostnamespace}, which is initialized to \cs{space} but can be redefined. % -%If you are writing a book or lengthy manuscript, you probably want the glossary to be printed on a separate page in the frontmatter. The \glossaries{} package comes pre-packaged with several different glossary styles, based on tabular environments, list environments, and more. You can also custom-build a glossary style. Below is one which I have been using. The code is in section~\refp{sec:custglos}. +%\ex|\renewcommand*{\glspostnamespace}{\space}|\xe % -%\fbox{\begin{minipage}[t]{4in} -%\printglossary[style=mysuper,type=\leipzigtype] -%\end{minipage}} +%\DescribeMacro{\glstreenamefmt}The abbreviation name in the glossary prints without extra formatting, which means it will print using \cs{leipzigfont}. You could change this behavior by redefining \cs{glstreenamefmt}. % -%\section{Multiple lists of acronyms} +%\ex|\renewcommand*{\glstreenamefmt}[1]{##1}|\xe % -%What do you do if your paper needs not only a list of gloss abbreviations, but also some other list(s) of acronyms, possibly formatted differently than the gloss abbreviations? All abbreviations declared with |\newleipzig| are saved in the |leipzig| glossary. This means that you can still use the |acronym| function in the \glossaries{} package for other acronyms (or define your own glossary). Use the |acronym| package option: +%\section{Multiple glossaries}\label{sec:multiple} % -%\ex|\usepackage[acronym]{glossaries}|\xe +%\noindent\framebox[\textwidth]{\noindent\vbox{\noindent{} See \autoref{app:multiple} for an example of a book-like document with multiple glossaries.}} +%\smallskip % -%\noindent and declare new acronyms with |\newacronym|: +%By default, gloss abbreviations are put into the \texttt{main} glossary. (Actually they are put into the \cs{glsdefaulttype} glossary, which is usually set to \texttt{main}.) The \hbox{[glosses]} option creates a new glossary named \texttt{leipzig}, via: % -%\ex|\newacronym|\oarg{options}\marg{unique-id}\marg{short}\marg{long}\xe +%\begin{verbatim}\newglossary[lpz]{leipzig}{lzs}{lzo}{\leipzigname}\end{verbatim} % -%\noindent and refer to chapter~13 in the \glossaries{} user documentation for more information about how to create acronym lists. +%In addition, \cs{leipzigtype} is redefined to \texttt{leipzig}. Since all entries defined via \cs{newleipzig} have |type=|\cs{leipzigtype}, they will be printed in the \texttt{leipzig} glossary instead of \texttt{main}. % -%The \leipzig{} package defines a newglossary called |leipzig|: +%\DescribeMacro{\newglossary}You can create as many glossaries as you would like before \cs{makeglossaries}, either by using certain \glossaries{} package options like \hbox{[acronyms]} and \hbox{[symbols]}, or by using \cs{newglossary} directly. (See Chapter~12 of the \glossaries{} user manual.) % -%\ex|\newglossary{leipzig}{lzs}{lzo}{\leipzigname}|\xe +%\DescribeMacro{\printglossaries} +%\DescribeMacro{\printglossary} +%\cs{printglossaries} will print all glossaries in the order they were defined. If you want to print the glossaries in a different order, or if you would like to assign different styles to each, you should use \cs{printglossary} for each glossary and set the style explicitly using the optional argument. +% +%\ex|\printglossary|\oarg{options}\xe +% +%For example, |\printglossary[type=main,style=list]| would print the \texttt{main} glossary using the \texttt{list} style defined by \glossaries{}. (If no type is given, then |\printglossary| will print the \texttt{main} glossary.) +% +%Recall that \cs{printglosses} is defined as |\printglossary[type=\leipzigtype]| and is also defined to print with the style specified by \leipzig{} package options. If you want a different style, you can specify that in the optional argument to \cs{printglosses}: +% +%\ex|\printglosses[style=list]|\xe +% +%You can reset the glossary preamble between each call of |\printglossary| or |\printglosses|. +% +%\DescribeMacro{[style=\meta{options}]}The \hbox{[style=\meta{options}]} option in \glossaries{} is set to define the style for all glossaries \emph{except} the \cs{leipzigtype} glossary. If you truly want to set one style for all glossaries, you will need to use \cs{setglossarystyle} before \cs{makeglossaries}. A linguistics paper might have several different glossaries of abbreviations, so if you wanted to print all of them using the \texttt{leipzigalttree} style, you could do the following: +% +%\iffalse +%\ex|\usepackage[nomain,acronyms,symbols,glosses]{leipzig}| +% +%|% package options create three glossaries:| +% +%| % Acronyms, Symbols, and Abbreviations|\newline +% +%|\setglossarystyle{leipzigalttree}| +% +%|\makeglossaries|\newline +% +%|\newacronym{acr}{acr}{sample acronym}| +% +%|\newglossaryentry[type=symbol]{pwd}{name={$\omega$},description={prosodic word}}| +% +%\xe +%\fi +% +%\ex|\usepackage{leipzig}| +% +%|\setglossarystyle{leipzigalttree}| +% +%|\makeglossaries|\xe % -%Gloss abbreviations defined with |\newleipzig| are added to glossary type |\leipzigtype|, which defaults to |leipzig|. (This is so that if you have other lists of acronyms in your paper, they will not be formatted the same as the gloss abbreviations.) You can redefine |\leipzigtype| to some other glossary if you want abbreviations to be added to some other glossary of your choice. The following line of code will instead put all gloss abbreviations into |\acronymtype|, which is a macro defined by the \glossaries{} package. If the |acronym| package option was declared, then |\acronymtype| points to the |acronym| glossary (pre-defined in \glossaries{}); if not, then |\acronymtype| points to the |main| glossary (also pre-defined by \glossaries{}). % -%\ex|\renewcommand{\leipzigtype}{\acronymtype}|\xe +%\noindent\framebox[\textwidth]{\noindent\vbox{\textbf{Note:} if you use this method to set \texttt{inline} as the style for every glossary, then no glossary will have a section header.}} % -%\section{Known bugs} +%\iffalse Examples of how to use acronyms and symbols options to create new glossaries.\fi % -%Using \leipzig{} for glossing abbreviations alongside other glossaries and/or lists of acronyms is largely untested but probably has unexpected results. Please contact me with issues. +%\section{FAQ} +% +%\begin{description} +%\item[Q:] Why don't the abbreviations display in smallcaps? +%\item[A:] Did you define abbreviations using ALL CAPS for the short form? The short form is displayed in \cs{leipzigfont}, which uses |\textsc|, but |\textsc| cannot make smallcaps out of capital letters: |\textsc{abc}| produces \textsc{abc}, but |\textsc{ABC}| produces \textsc{ABC}. Solution: change the \cs{newleipzig} definitions to use lowercase letters in the second argument. +%\item[A:] Not all font families contain a smallcaps font. For instance, only some version of Times New Roman contain a smallcaps font; the versionson Windows XP and Mac OS X do not. Solution: try changing the smallcaps font, or at least using |\usepackage[T1]{fontenc}| in your preamble. +%\end{description} % % \begin{thebibliography}{9} % \bibitem{bic08} Bickel, Balthasar, Bernard Comrie, and Martin Haspelmath. (2008). ``The Leipzig Glossing Rules. Conventions for Interlinear Morpheme by Morpheme Glosses.'' Revised version of February 2008. Department of Linguistics, Max Plank Institute for Evolutionary Anthropology. Retreived 30 June 2012: \url{http://www.eva.mpg.de/lingua/resources/glossing-rules.php}. @@ -549,277 +883,1098 @@ For full indexing capabilities, leipzig should be used in conjunction with the g % \verb+\Tr{}+ & \sc tr & transitive\\ % \verb+\Voc{}+ & \sc voc & vocative\\\bottomrule % \end{longtable} +% +%\section{Example of multiple glossaries}\label{app:multiple}% % -%\section{Custom glossary environment}\label{sec:custglos}% -%\begin{verbatim}\documentclass{book} -% -% \usepackage[nomain,section=chapter]{glossaries}% -% [2012/05/21 v3.02 (NLCT)]% -% \usepackage{glossary-inline}% -% \newglossarystyle{mysuper}{% -% \glossarystyle{super}% based on super -% \renewenvironment{theglossary}% -% {\tablehead{}\tabletail{}% -% \begin{supertabular}{@{}lp{\glsdescwidth}}}% -% {\end{supertabular}}% -% \renewcommand*{\glossaryheader}{}% -% \renewcommand*{\glsgroupheading}[1]{}% -% \renewcommand*{\glossaryentryfield}[5]{% -% \glsentryitem{##1}\glstarget{##1}{##2} -% & \makefirstuc{##3}\glspostdescription{}\\}% -% \renewcommand*{\glossarysubentryfield}[6]{% -% & -% \glssubentryitem{##2}% -% \glstarget{##2}{\strut}\makefirstuc{##4}\glspostdescription{}\\}% -% \renewcommand*{\glsgroupskip}{}% -% }% -% \usepackage{leipzig}% -% \makeglossaries -% \glsdisablehyper +%\begin{verbatim}\documentclass{book}% +% +%\usepackage[mcolblock,% style for gloss abbreviations +% symbols,% creates glossary of symbols +% glosses,% creates glossary of gloss abbreviations +% acronyms,% creates glossary of acronyms that +% % are not symbols or glosses +%]{leipzig} +% +% % Glossaries other than \leipzigtype use this style: +%\setglossarystyle{block} +% +% % Change default name of \leipzigtype: +%\renewcommand{\leipzigname}{Grammatical glosses} +% +%\makeglossaries +% +% % Define some entries. +% +% % These will go into the acronym glossary. +% \newacronym{acr1}{BPS}{Bare Phrase Structure} +% \newacronym{acr2}{OT}{Optimality Theory} +% +% % These will go into the main glossary. +% \newglossaryentry{gls1}{name={Richness of the Base},% +% description={This is a description of Richness of the Base}} +% \newglossaryentry{gls2}{name={Emergence of the Unmarked},% +% description={This is a description of the +% Emergence of the Unmarked}} +% +% % These will go into the symbols glossary. +% \newacronym[type=symbols,% +% symbol=\textiota{},% +% sort={iota}]{iphrase}{IPh}{intonational phrase}% +% +% \newacronym[type=symbols,% +% symbol=\textphi{},% +% sort={phi}]{pphrase}{PPh}{phonological phrase}% +% +% \newacronym[type=symbols,% +% symbol=\textomega{},% +% sort={omega}]{pword}{PWd}{prosodic word}% +% +%\glsaddall % if you want to see what the output looks like % %\begin{document} -%\printglossary[style=mysuper,type=\leipzigtype] -%\end{document}\end{verbatim} % -% \StopEventually{} +% % The main glossary will print after its own chapter heading, +% % because we didn't change the [section] option. +% % We will print the main glossary in yet a third style: +% \printglosses[style=list] +% +% % Now we will print all of the remaining glossaries as +% % individual sections together in one chapter. +% \chapter*{Abbreviations} +% \setglossarysection{section} +% +% \printglosses % prints using mcolblock style +% \printacronyms % prints using block style +% \printsymbols % prints using block style +% +%\end{document} +%\end{verbatim} +% +%\StopEventually{^^A +% \iffalse\PrintChanges\PrintIndex\fi +%} +% %\section{The Code} % \iffalse -% \begin{macrocode} %<*package> -% \end{macrocode} -% \fi -% \iffalse -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% This is a simple list of newcommands which create shortcuts for %% -%% standard linguistic glosses (see the Leipzig Glossing rules, %% -%% http://www.eva.mpg.de/lingua/resources/glossing-rules.php %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \fi -%This code originally Sven Siegmund's, created with help of XeTeX mailing list, to detect optional argument. See \url{http://xelatex.blogspot.com/2008/03/newcommand-with-optional-argument.html}. -% \begin{macrocode} -\long\def\tlist@if@empty@nTF #1{% - \expandafter\ifx\expandafter\\\detokenize{#1}\\% - \expandafter\@firstoftwo% - \else% - \expandafter\@secondoftwo% - \fi% -}% -% \end{macrocode} -%Some booleans to determine whether the \glossaries{} package is loaded or not. The idea was to be able to let users load the \leipzig{} class either before or after \glossaries{}, but they do not currently work well. +% \subsection{Global conditionals and definitions} +% \begin{macro}{\ifleipzig@glossaries} +% \begin{macro}{\ifleipzig@noglossaries} +% Some booleans to determine whether the \glossaries{} package is loaded or not. The default is to load \glossaries{}. +% % \begin{macrocode} -\newif\ifleipzig@glossaries\leipzig@glossariesfalse +\newif\ifleipzig@glossaries\leipzig@glossariestrue \newif\ifleipzig@noglossaries\leipzig@noglossariesfalse % \end{macrocode} -%A boolean to not index the abbreviations defined in the Leipzig Glossing Rules. +% \end{macro} +% \end{macro} +% \begin{macro}{\leipzig@sepglossestrue} +% Boolean to determine whether to typeset glosses in a separate glossary. Default is false, because we assume that the most common use case is to have only one glossary, in which case glosses can go in the main glossary. +% % \begin{macrocode} -\newif\ifleipzig@donotindex\leipzig@donotindexfalse +\newif\ifleipzig@sepglosses\leipzig@sepglossesfalse % \end{macrocode} -%\begin{macro}{glossaries} -%\begin{macro}{noglossaries} -%Users can specify with package options whether they would like to use \leipzig{} with the indexing capabilities of \glossaries{}. For instance, if the \glossaries{} package is loaded but the user does not want to index abbreviations, then he can use the \texttt{noglossaries} package option. +% \end{macro} +% \begin{macro}{\ifleipzig@nostandards} +% \begin{macro}{\ifleipzigdonotindex} +% These two booleans prevent the set of standard set of abbreviations defined in the Leipzig Glossing Rules from being indexed or printed in the glossary. Users are still able to use the shortcut macros defined with the package, like |\Acc{}|. Default is to include standards in the glossary. \cs{leipzigdonotindex} can be used by authors to prevent particular abbreviations from being indexed. +% % \begin{macrocode} -\DeclareOption{glossaries}{\leipzig@glossariestrue} -\DeclareOption{noglossaries}{\leipzig@noglossariestrue} -%\RequirePackage{xkeyval} -%\newlength{\preview@border} -%\setlength{\preview@border}{0pt} -%\DeclareOptionX{PreviewBorder}[0pt]{\setlength{\preview@border}{#1} -%\ProcessOptionsX +\newif\ifleipzig@nostandards\leipzig@nostandardsfalse +\newif\ifleipzigdonotindex\leipzigdonotindexfalse % \end{macrocode} -%\end{macro} -%\end{macro} -%\begin{macro}{nostandards} -%Use this package option if you do not want the standard Leipzig abbreviations to show up in the glossary. +% \end{macro} +% \end{macro} +%\begin{macro}{\@leipzig@default@style} +%\changes{2.0}{2017/04/08}{new} +% \cs{@leipzig@default@style} holds the style that will be used in the definition for \cs{printglossary[type=\leipzigtype]}. We default to an inline style because this is the most common use case. This can be reset by the package options \hbox{[block]}, \hbox{[mcolblock]}, and \hbox{[inline]} (same as default). +% +% \begin{macrocode} +\newcommand*{\@leipzig@default@style}{inline} +% \end{macrocode} +% \end{macro} +%\begin{macro}{\ifleipzighyper} +%Boolean switch to make abbreviations link to the glossary. Default is false. +% % \begin{macrocode} -\DeclareOption{nostandards}{\leipzig@donotindextrue} +\newif\ifleipzighyper\leipzighyperfalse +\newif\ifleipzignonumbers\leipzignonumberstrue % \end{macrocode} %\end{macro} -%Pass any other options to the \glossaries{} package and process options. +%\begin{macro}{\leipzigfont} +% Some user hooks to change how abbreviations are displayed in-text +% on first and subsequent uses. These default to smallcaps. \cs{leipzigfont} works regardless of whether \glossaries{} is loaded or not. +% % \begin{macrocode} -\DeclareOption*{% - \PassOptionsToPackage{\CurrentOption}{glossaries}% -}% -\ProcessOptions\relax +\newcommand{\leipzigfont}[1]{\textsc{#1}}% % \end{macrocode} -%Determine if the \glossaries{} package was loaded, and set the boolean to true (unless overwritten by the user with the package option \texttt{noglossaries}). +%\end{macro} +% \subsection{Package options} +% \begin{macro}{[glossaries]} +%\changes{v2.0}{2017/04/05}{option now loads the glossaries package instead of merely setting a boolean and issuing a warning.} +% \begin{macro}{[noglossaries]} +%\changes{v2.0}{2017/04/05}{option now prevents leipzig from loading glossaries package.} +%Option \hbox{[glossaries]} will load the \glossaries{} package, if it exists (default behaviour). The package option \hbox{[noglossaries]} prevents \leipzig{} from loading \glossaries{}; if \glossaries{} was loaded before \leipzig{} then some of that package's functionality will still exist. +% % \begin{macrocode} -\@ifpackageloaded{glossaries}{% true text - \ifleipzig@noglossaries\leipzig@glossariesfalse\relax - \else\leipzig@glossariestrue\relax\fi -}{% false text - \ifleipzig@glossaries\PackageWarning{leipzig}{% - glossaries package not loaded. Load glossaries - package at some point.}% - \else\leipzig@glossariesfalse\relax\fi +\DeclareOption{glossaries}{\leipzig@glossariestrue} +\DeclareOption{noglossaries}{% + \leipzig@glossariesfalse + \leipzig@noglossariestrue }% % \end{macrocode} -%If glossary-inline style not loaded, do nothing. Else renew inline style to have a user-defined separator between the abbreviation and long form. +%\end{macro} +%\end{macro} +%\begin{macro}{[glosses]} +%\begin{macro}{[leipzig]} +% These options create a new glossary named \texttt{leipzig} and redefines \cs{leipzigtype} to \texttt{leipzig}. +% % \begin{macrocode} -\@ifpackageloaded{glossary-inline}{% renew inline -\renewglossarystyle{inline}{% - \renewenvironment{theglossary}% - {% - \def\gls@inlinesep{}% - \def\gls@inlinesubsep{}% - \def\gls@inlineshortlongsep{% - \glsinlineshortlongseparator}% added this +\DeclareOption{glosses}{\leipzig@sepglossestrue} +\DeclareOption{leipzig}{\leipzig@sepglossestrue} +% \end{macrocode} +%\end{macro} +%\end{macro} +% \begin{macro}{[nostandards]} +% This option prevents the set of standard abbreviations from being indexed in a glossary. +% +% \begin{macrocode} +\DeclareOption{nostandards}{\leipzig@nostandardstrue} +% \end{macrocode} +%\end{macro} +% \begin{macro}{[block]} +%\changes{2.0}{2017/04/08}{new} +% \begin{macro}{[mcolblock]} +%\changes{2.0}{2017/04/08}{new} +% \begin{macro}{[inline]} +%\changes{2.0}{2017/04/08}{new} +% \leipzig{} defines three glossary styles which can be used, which can be set via these package options. The \cs{leipzigtype} glossary will display using this style, regardless of whether \cs{printglossaries} or \cs{printglosses} is used. +% +% \begin{macrocode} +\DeclareOption{block}{% + \renewcommand*{\@leipzig@default@style}{leipzigalttree}% +}% +\DeclareOption{mcolblock}{% + \renewcommand*{\@leipzig@default@style}{leipzigmcolalttree}% +}% +\DeclareOption{inline}{% + \renewcommand*{\@leipzig@default@style}{inline}% +}% +% \end{macrocode} +%\end{macro} +%\end{macro} +%\end{macro} +%\begin{macro}{[leipzighyper]} +%\begin{macro}{[leipzignohyper]} +% Two package options to control whether gloss abbreviations are hyperlinked to the glossary. Default is false. +% +% \begin{macrocode} +\DeclareOption{leipzighyper}{\leipzighypertrue} +\DeclareOption{leipzignohyper}{\leipzighyperfalse} +% \end{macrocode} +%\end{macro} +%\end{macro} +% Pass all options to the {\glossaries} package and end. +% +% \begin{macrocode} +\DeclareOption*{% + \PassOptionsToPackage{\CurrentOption}{glossaries}% +}% +\ProcessOptions\relax +% \end{macrocode} +%\subsection{Global settings used with \glossaries{}} +% Unless the \hbox{[noglossaries]} option was declared, determine if {\glossaries} was loaded; if not, then load \glossaries{}, \textsf{glossary-inline}, \textsf{glossary-tree}, and \textsf{glossary-mcols}, if they exist. If \glossaries{} cannot be found, throw an error. +% +% \begin{macrocode} +\ifleipzig@noglossaries\relax +\else + \ifleipzig@glossaries + \@ifpackageloaded{glossaries}% + {\relax}% + {\IfFileExists{glossaries.sty}{% + \RequirePackage{glossaries}% + }% + {\PackageError{leipzig}% + {glossaries.sty not found.}% + {Install glossaries.sty or use [noglossaries] option.}% + }% + \IfFileExists{glossary-tree.sty}{% + \RequirePackage{glossary-tree}% + }% + {\PackageWarning{leipzig}% + {glossary-tree.sty not found.}% + {Install glossary-tree.sty to use leipzigalttree style.}% + }% + \IfFileExists{glossary-mcols.sty}{% + \RequirePackage{glossary-mcols}% + }% + {\PackageWarning{leipzig}% + {glossary-mcols.sty not found.}% + {Install glossary-mcols.sty to use leipzigmcolalttree style.}% + }% + \IfFileExists{glossary-inline.sty}{% + \RequirePackage{glossary-inline}% + }% + {\PackageWarning{leipzig}% + {glossary-inline.sty not found.}% + {Install glossary-inline.sty to use inline style.}% + }% + }% + \fi +\fi +% \end{macrocode} +% From here on out we use |\@ifpackageloaded{glossaries}|, whichis true either if someone used the \hbox{[glossaries]} option, or if they used \hbox{[noglossaries]} but loaded \glossaries{} before \leipzig{}. Possibly unexpected behavior, but this command avoids nested conditionals, which are problematic. +% +%\begin{macro}{\leipzigtype} +% If \glossaries{} was loaded, define some stub macros and conditionals. All glossary entries created with \cs{newleipzig} have type=\cs{leipzigtype}. It is initialized here to \cs{glsdefaulttype}, so that gloss abbreviations are put into the main glossary. The \hbox{[glosses]} package option redefines it to expand to \texttt{leipzig}. +% +%\begin{macro}{\leipzigname} +%The name of the \cs{leipzigtype} glossary is initialized to `Abbreviations'. This prints in the section header before the glossary, if there is one. +% +% \begin{macrocode} +\@ifpackageloaded{glossaries}{% + \newcommand*{\leipzigtype}{\glsdefaulttype}% + \newcommand{\leipzigname}{Abbreviations}% +% \end{macrocode} +% \end{macro} +% \end{macro} +%\begin{macro}{\printglosses} +%\begin{macro}{\printleipzig} +%\changes{2.0}{2017/04/08}{new} +% \cs{printglosses} will print the \cs{leipzigtype} glossary. The macro \cs{printleipzig} is provided as an alias. +% +% \begin{macrocode} + \providecommand*{\printglosses}[1][]{}% + \providecommand*{\printleipzig}[1][]{}% +% \end{macrocode} +% \end{macro} +% \end{macro} +%\begin{macro}{\firstleipzigfont} +%This controls how the short form is formatted on first use. +% +% \begin{macrocode} + \newcommand{\firstleipzigfont}[1]{\leipzigfont{#1}}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\ifleipzigdesccapitalize} +%Switch to capitalize the description of the abbreviation in the glossary. Default is false. +% +% \begin{macrocode} + \newif\ifleipzigdesccapitalize\leipzigdesccapitalizefalse +% \end{macrocode} +%\begin{macro}{\leipzig@glossentrydesc} +%\cs{leipzig@glossentrydesc} replaces original \cs{glossentrydesc} in the glossary styles \texttt{leipzigalttree}, \texttt{leipzigmcolalttree}, and \texttt{inline}. If the author has used \cs{leipzigdesccapitalizetue}, then we redefine \cs{leipzig@glossentrydesc} to use \cs{Glossentrydesc}. This throws an error if the description is simply \cs{nopostdesc}, so we stick with \cs{glossentrydesc} in that case. +% +% \begin{macrocode} + \newcommand*{\leipzig@glossentrydesc}[1]{% + \ifleipzigdesccapitalize + \expandafter\ifx#1\nopostdesc + \glossentrydesc{#1}% + \else\Glossentrydesc{#1}% + \fi + \else + \glossentrydesc{#1}% + \fi + }% +% \end{macrocode} +%\end{macro} +%\end{macro} +%\begin{macro}{\glspostnamespace} +%This is used in the \texttt{leipzigalttree} and \texttt{leipzigmcolalttree} styles. In \glossaries{} the space after a glossary entry name was hard-coded as \cs{space}, but authors might want this to be more flexible. +% +% \begin{macrocode} + \newcommand*{\glspostnamespace}{\space}% +% \end{macrocode} +%\end{macro} +% End if \glossaries{} was loaded. +% +% \begin{macrocode} +}{}% +% \end{macrocode} +% If an author needs more than one glossary, the package option \hbox{[glosses]} will create a new glossary called \texttt{leipzig} with name \cs{leipzigname} (default: `Abbreviations') and will switch \cs{leipzigtype} to point to there. +% +% \begin{macrocode} +\@ifpackageloaded{glossaries}{% + \ifleipzig@sepglosses + \newglossary[lpz]{leipzig}{lzs}{lzo}{\leipzigname}% + \renewcommand*{\leipzigtype}{leipzig}% +% \end{macrocode} +% Define hook to set the toc title when \textsf{translator} is in use. +% +% \begin{macrocode} + \newcommand*{\gls@tr@set@leipzig@toctitle}{% + \translatelet{\glossarytoctitle}{Abbreviations}% + }% +% \end{macrocode} +% Otherwise, gloss abbreviations will sit in the \texttt{main} glossary, because we initialized \cs{leipzigtype} to \cs{glsdefaulttype} (usually `main'). We want the main glossary name to always expand to whatever the user defines \cs{leipzigname} as. This is the most likely expected behavior from the user's end, because if a linguistics document has a glossary at all, it is likely to be a list of gloss abbreviations. Therefore, we \cs{renewcommand} the \cs{glossaryname} to return \cs{leipzigname}. +% +% \begin{macrocode} + \else + \renewcommand*{\glossaryname}{\leipzigname} + \fi +% \end{macrocode} +%\subsection{Formatting abbreviations} +%Declare the \cs{leipzigtype} glossary as an acronym list. +% +% \begin{macrocode} + \DeclareAcronymList{\leipzigtype}% +% \end{macrocode} +%\begin{macro}{long-lpz-short} +% We create a new acronym style, modeled off of the \glossaries{} code for the +% \texttt{long-sc-short} style. It copies the \texttt{long-short} style, but changes +% the font of the short form to be \cs{leipzigfont}.\footnote{Unfortunately, all abbreviations will use this style, even if they are not gloss abbreviations. The \textsf{glossaries-extra} provides a way to set a different style for each category of abbrevations.} The short form will be used both in running text and in the glossary. (This default can be overridden by setting the short forms explicitly via options to \cs{newglossaryentry} or \cs{newleipzig}.) +% +% \begin{macrocode} + \newacronymstyle{long-lpz-short}% + {% + \GlsUseAcrEntryDispStyle{long-short}% }% - {\glspostinline}% - \renewcommand*{\glossaryheader}{}% - \renewcommand*{\glsgroupheading}[1]{}% - \renewcommand*{\glossaryentryfield}[5]{% - \gls@inlinesep - \glsentryitem{##1}\glstarget{##1}{##2}% - \def\glo@desc{##3}% - \def\@no@post@desc{\nopostdesc}% - \ifx\glo@desc\@no@post@desc + {% + \GlsUseAcrStyleDefs{long-short}% + \renewcommand{\acronymfont}[1]{\leipzigfont{##1}}% + \renewcommand{\firstacronymfont}[1]{\firstleipzigfont{##1}}% + \renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}% + }% +% \end{macrocode} +% Set acronym style. (Must be set after \cs{DeclareAcronymList}). +% +% \begin{macrocode} + \setacronymstyle{long-lpz-short} +% \end{macrocode} +%\end{macro} +% Several redefinitions need to happen at the beginning of the document, to take into account any changes in the preamble. +% +% \begin{macrocode} +\AtBeginDocument{% +% \end{macrocode} +% +% If \glossaries{} option \hbox{[nostyles]} has been used, then \cs{@glossary@default@style} is set to \cs{relax} and no glossary style is set! This is a problem if the author has at least one glossary besides \cs{leipzigtype}, so we set the glossary style to \cs{@leipzig@default@style} as a last resort. \cs{@leipzig@default@style} is initialized to \texttt{inline} but could have been redefined by the user via the package options \hbox{[block]}, \hbox{[mcolblock]}, and \hbox{[inline]}. +% +% \begin{macrocode} + \if\@glossary@default@style\relax + \setglossarystyle{\@leipzig@default@style}% + \fi +% \end{macrocode} +%\begin{macro}{\printglosses} +%\begin{macro}{\printleipzig} +% Provide shortcut \cs{printglosses} (and alias \cs{printleipzig}) to print abbreviations in the appropriate style. We wait until \cs{AtBeginDocument} in case the author has changed the style in the preamble. +% +% \cs{printglosses} basically expands to |\printglossary[type=\leipzigtype]|. If \cs{@leipzig@default@style} is defined, we also set a style. If the author used \cs{leipzignonumbersfalse}, then we also include a number list. +% +% \begin{macrocode} + \ifx\@leipzig@default@style\relax + \renewcommand*{\printglosses}[1][]{% + \printglossary[type=\leipzigtype,#1]% + }% + \else + \ifleipzignonumbers + \renewcommand*{\printglosses}[1][]{% + \printglossary[type=\leipzigtype,% + style=\@leipzig@default@style,% + nonumberlist,#1] + }% \else - \ifstrempty{##3}{}{\gls@inlineshortlongsep##3}% + \renewcommand*{\printglosses}[1][]{% + \printglossary[type=\leipzigtype,% + style=\@leipzig@default@style,#1] + }% \fi - \ifglshaschildren{##1}% - {% - \glsresetsubentrycounter - \glsinlineparentchildseparator - \def\gls@inlinesubsep{}% + \fi + \let\printleipzig\printglosses +% \end{macrocode} +%\end{macro} +%\end{macro} +% We also redefine \cs{printglossaries} so that when the \cs{leipzigtype} glossary is printed, it uses \cs{printglosses} with the correct style specifications instead of \cs{printglossary}. +% +% \begin{macrocode} + \renewcommand*{\printglossaries}{% +% \end{macrocode} +% \cs{forallglossaries} defines the first argument (\cs{@@glo@type}) as the name of the current glossary in the loop. +% +% \begin{macrocode} + \forallglossaries{\@@glo@type}{% +% \end{macrocode} +% If \cs{@@glo@type} and \cs{leipzigtype} expand to the same thing, then we use \cs{printglosses}. We have to fully expand both macros before comparison. +% +% \begin{macrocode} + \edef\tempa{\@@glo@type}% + \edef\tempb{\leipzigtype}% + \ifx\tempa\tempb% + \printglosses% + \else + \printglossary[type=\@@glo@type]% + \fi% +% \end{macrocode} +% End \cs{forallglossaries}. +% +% \begin{macrocode} + }% +% \end{macrocode} +% End \cs{printglossaries} redefinition. +% +% \begin{macrocode} + }% +% \end{macrocode} +% End \cs{AtBeginDocument}. +% +% \begin{macrocode} +}% +% \end{macrocode} +% End |\@ifpackageloaded{glossaries}| true text. If not, \cs{relax}. +% +% \begin{macrocode} +}% +{\relax}% +% \end{macrocode} +%\subsection{Glossary styles} +%Set some defaults for the \cs{leipzigtype} glossary. These can be overridden by the author. +% +% \begin{macrocode} +\@ifpackageloaded{glossaries}{% + \forallglossaries[\leipzigtype]{\@@glo@type}{% + \glsnogroupskiptrue + \glsnopostdottrue + }% +}{\relax}% +% \end{macrocode} +% The {\leipzig} package pre-defines three styles. +% +%\subsubsection{leipzigalttree style} +% \begin{macrocode} +\@ifpackageloaded{glossary-tree}{% +% \end{macrocode} +%\begin{macro}{leipzigalttree} +%If the \textsf{glossary-tree} package is loaded, then define a new block glossary style, \texttt{leipzigalttree}, modified from the \texttt{alttree} style with only minimal changes. +% +% \begin{macrocode} + \newglossarystyle{leipzigalttree}{% + \setglossarystyle{alttree}% + \renewenvironment{theglossary}% + {\def\@gls@prevlevel{-1}% + \mbox{}\par + }% + {\par}% +% \end{macrocode} +% Removed default bolding from \cs{glstreenamefmt}. That way, the short form prints with the default formatting imposed by the \texttt{long-lpz-short} acronym style. This defaults to \cs{leipzigfont}, unless the author used the \texttt{short} key in the gloss entry definition. +% +% \begin{macrocode} + \renewcommand*{\glstreenamefmt}[1]{##1} +% \end{macrocode} +% The definitions for \cs{glossentry} and \cs{subglossentry} are identical to \texttt{alttree}, except that I made the space after the widest name adjustable with \cs{glspostnamespace}, which defaults to \cs{space}. I also printed the description using \cs{leipzig@glossentrydesc}, which defaults to \cs{glossentrydesc}, but will be redefined to use \cs{Glossentrydesc} if \cs{leipzigdesccapitalize} is set to true by the author. +% +% \begin{macrocode} + \renewcommand{\glossentry}[2]{% + \ifnum\@gls@prevlevel=0\relax + \else + \settowidth{\glstreeindent}{% + \glstreenamefmt{\@glswidestname\glspostnamespace}% + }% + \fi + \hangindent\glstreeindent + \parindent\glstreeindent + \makebox[0pt][r]{% + \glstreenamebox{\glstreeindent}{% + \glsentryitem{##1}\glstreenamefmt{% + \glstarget{##1}{\glossentryname{##1}}% + }% + }% + }% + \ifglshassymbol{##1}{(\glossentrysymbol{##1})\space}{}% + \leipzig@glossentrydesc{##1}\glspostdescription\space ##2\par + \def\@gls@prevlevel{0}% + }% + \renewcommand{\subglossentry}[3]{% + \ifnum##1=1\relax + \glssubentryitem{##2}% + \fi + \ifnum\@gls@prevlevel=##1\relax + \else + \@ifundefined{@glswidestname\romannumeral##1}{% + \settowidth{\gls@tmplen}{% + \glstreenamefmt{\@glswidestname\glspostnamespace}}% + }{% + \settowidth{\gls@tmplen}{\glstreenamefmt{% + \csname @glswidestname\romannumeral##1\endcsname + \glspostnamespace}}% + }% + \ifnum\@gls@prevlevel<##1\relax + \setlength\glstreeindent\gls@tmplen + \addtolength\glstreeindent\parindent + \parindent\glstreeindent + \else + \@ifundefined{@glswidestname\romannumeral\@gls@prevlevel}{% + \settowidth{\glstreeindent}{\glstreenamefmt{% + \@glswidestname\glspostnamespace}}}{% + \settowidth{\glstreeindent}{\glstreenamefmt{% + \csname @glswidestname\romannumeral\@gls@prevlevel + \endcsname\glspostnamespace}}}% + \addtolength\parindent{-\glstreeindent}% + \setlength\glstreeindent\parindent + \fi + \fi + \hangindent\glstreeindent + \makebox[0pt][r]{\glstreenamebox{\gls@tmplen}{% + \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}}}% + \ifglshassymbol{##2}{(\glossentrysymbol{##2})\space}{}% + \leipzig@glossentrydesc{##2}\glspostdescription\space ##3\par + \def\@gls@prevlevel{##1}% }% - {}% - \def\gls@inlinesep{\glsinlineseparator}% }% - \renewcommand*{\glossarysubentryfield}[6]{% - \gls@inlinesubsep% - \glstarget{##2}{}% - \glssubentryitem{##2}##4% - \def\gls@inlinesubsep{\glsinlinesubseparator}% +% \end{macrocode} +%The style name \texttt{leipzigalttree} is hard to remember. We will create an alias \texttt{block}. This is easier to remember and matches the analogous package option that sets this style, but it runs the risk of being so common that some other package (or \glossaries{} itself) overwrites it. +% \begin{macrocode} + \newglossarystyle{block}{% + \setglossarystyle{leipzigalttree}% }% - \renewcommand*{\glsgroupskip}{}% -} % \end{macrocode} -%\begin{macro}{glsinlineshortlongseparator} -%\begin{macro}{glsnamefont} -%\begin{macro}{glossarysection} -%The separator between the short and long forms in the glossary can be set to a user-defined style like \{=\} or \verb+{:\space}+ (default is \verb+\space+). By default the short form of the abbreviations are set to smallcaps, and there is no glossary section title. +%End |\@ifpackageloaded{glossaries}|. Else, \cs{relax}. +% % \begin{macrocode} -\newcommand*{\glsinlineshortlongseparator}{\,=\,\linebreak[1]}% added this -\renewcommand*{\glsinlineseparator}{,\space}% changed from ;\space -\renewcommand*{\glsinlinesubseparator}{,\space} -\renewcommand*{\glsinlineparentchildseparator}{:\space} -\renewcommand*{\glspostinline}{.\space}% changed from . -\renewcommand{\glsnamefont}[1]{\textsc{#1}}% abbrv in glossary are \sc -\renewcommand*{\glossarysection}[2][]{}% no section name -}{\relax}% if glossary-inline not loaded +}% +{\relax}% % \end{macrocode} %\end{macro} +%\subsubsection{leipzigmcolalttree style} +%\begin{macro}{leipzigmcolalttree} +% The \texttt{leipzigmcolalttree} style technically only requires \textsf{glossary-tree} to be loaded. We also require \textsf{glossary-mcols}; this anticipates future updates where \leipzig{} might redefine several more \texttt{mcol*} styles. +% +% \begin{macrocode} +\@ifpackageloaded{glossary-tree}{% + \@ifpackageloaded{glossary-mcols}{% + \newglossarystyle{leipzigmcolalttree}{% + \setglossarystyle{leipzigalttree}% + \renewenvironment{theglossary}% + {% + \begin{multicols}{\glsmcols}% +% \end{macrocode} +% I added \cs{raggedcolumns}. Otherwise if one column has fewer entries than the others, the space between entries in that column is increased so that the bottoms of both columns are equal, which ruins the tabular-look. +% +% \begin{macrocode} + \raggedcolumns + \def\@gls@prevlevel{-1}% + \mbox{}\par +% \end{macrocode} +% I hardcoded a negative \cs{vspace} because the glossary was beginning with a blank line that \cs{removelastskip} would not remove. +% +% \begin{macrocode} + \vspace{-\baselineskip}% + }% + {\par + \end{multicols}}% + }% +% \end{macrocode} +%The style name \texttt{leipzigmcolalttree} is hard to remember. We will create an alias \texttt{mcolblock}. This is easier to remember and matches the analogous package option that sets this style, but it runs the risk of being so common that some other package (or \glossaries{} itself) overwrites it. +% \begin{macrocode} + \newglossarystyle{mcolblock}{% + \setglossarystyle{leipzigmcolalttree}% + }% +% \end{macrocode} +% End if \textsf{glossary-mcols} and \textsf{glossary-tree} loaded. +% +% \begin{macrocode} + }% + {\relax}% +}% +{\relax}% +% \end{macrocode} %\end{macro} -%\end{macro} +%\subsubsection{inline style} +%\begin{macro}{inline} +%If the \textsf{glossary-inline} package is loaded, then redefine the existing \texttt{inline} glossary style. % \begin{macrocode} -% Default is to print all grammatical glosses in small caps: -\newcommand{\leipzigfont}[1]{\textsc{#1}}% -\newcommand{\firstleipzigfont}[1]{\leipzigfont{#1}}% -\ifleipzig@glossaries %if glossaries package loaded - \renewcommand*{\acrpluralsuffix}{\textup{\glspluralsuffix}}% - \newcommand{\leipzigname}{Abbreviations} - \newglossary{leipzig}{lzs}{lzo}{\leipzigname} - \newcommand{\leipzigtype}{leipzig} -%% The following commands are based on the Custom Acronym commands in the glossaries package. -% %% #1 = first / firstplural / text / plural (as appropriate -% %% #2 = description -% %% #3 = symbol -% %% #4 = inserted text -\newcommand*{\SetLeipzigDisplayStyle}[1]{% - \defglsdisplay[#1]{\leipzigfont{##1}##4}% - \defglsdisplayfirst[#1]{\firstleipzigfont{##1}##4}% -} -\newcommand*{\CustomLeipzigFields}{% - name={\the\glsshorttok},% - description={\the\glslongtok},% - symbol={\the\glsshorttok},% - first={\firstleipzigfont{\the\glsshorttok}},% - firstplural={\firstleipzigfont{\the\glsshorttok}\noexpand\acrpluralsuffix},% - text={\leipzigfont{\the\glsshorttok}},% - plural={\leipzigfont{\the\glsshorttok}\noexpand\acrpluralsuffix}% -} -\newcommand*{\LeipzigAcronymDef}{% - \protected@edef\@do@newglossaryentry{% - \noexpand\newglossaryentry{\the\glslabeltok}% +\@ifpackageloaded{glossary-inline}{% if glossary-inline loaded +% \end{macrocode} +%We need the functionality of \cs{renewglossarystyle}, so define it if it is undefined. +% \begin{macrocode} + \providecommand{\renewglossarystyle}[2]{% + \ifcsundef{@glsstyle@#1}% {% - type=\leipzigtype,% - short={\leipzigfont{\the\glsshorttok}},% used in e.g. \acrshort - shortplural={\leipzigfont{\the\glsshorttok}\noexpand\acrpluralsuffix},% - long={\the\glslongtok},% - longplural={\the\glslongtok\noexpand\acrpluralsuffix},% - user1={\the\glsshorttok},% - user2={\the\glsshorttok\noexpand\acrpluralsuffix},% - user3={\the\glslongtok},% - user4={\the\glslongtok\noexpand\acrpluralsuffix},% - \CustomLeipzigFields,% - \the\glskeylisttok + \PackageError{glossaries}{Glossary style `#1' isn't already defined}{}% + }% + {% + \csdef{@glsstyle@#1}{#2}% + }% + } +% \end{macrocode} +% The first version of \textsf{glossary-inline} is from \glossaries{} v3.02. There were major additions in 3.03 though, so we include a slightly different version of \texttt{inline} for systems with \glossaries{} v3.03+ (2012/05/22 or later). +% +% \begin{macrocode} + \@ifpackagelater{glossaries}{2012/05/22}{% + \renewglossarystyle{inline}{% + \renewenvironment{theglossary}% + {% + \def\gls@inlinesep{}% + \def\gls@inlinesubsep{}% + \def\gls@inlinepostchild{}% + }% + {\glspostinline}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% +% \end{macrocode} +% The gloss and subgloss format are changed to replace \cs{glossentrydesc} with \cs{leipzig@glossentrydesc}. +% +% \begin{macrocode} + \renewcommand{\glossentry}[2]{% + \glsinlinedopostchild + \gls@inlinesep + \glsentryitem{##1}% + \glsinlinenameformat{##1}{% + \glossentryname{##1}% + }% + \ifglsdescsuppressed{##1}% + {% + \glsinlineemptydescformat + {% + \glossentrysymbol{##1}% + }% + {% + ##2% + }% + }% + {% + \ifglshasdesc{##1}% + {\glsinlinedescformat{\leipzig@glossentrydesc{##1}}{\glossentrysymbol{##1}}{##2}}% + {\glsinlineemptydescformat{\glossentrysymbol{##1}}{##2}}% + }% + \ifglshaschildren{##1}% + {% + \glsresetsubentrycounter + \glsinlineparentchildseparator + \def\gls@inlinesubsep{}% + \def\gls@inlinepostchild{\glsinlinepostchild}% + }% + {}% + \def\gls@inlinesep{\glsinlineseparator}% + }% + \renewcommand{\subglossentry}[3]{% + \gls@inlinesubsep% + \glsinlinesubnameformat{##2}{% + \glossentryname{##2}}% + \glssubentryitem{##2}% + \glsinlinesubdescformat{\leipzig@glossentrydesc{##2}}{\glossentrysymbol{##2}}{##3}% + \def\gls@inlinesubsep{\glsinlinesubseparator}% + }% +% \end{macrocode} +%We also change some of the default settings. +% +% \begin{macrocode} + \renewcommand*{\glsgroupskip}{}% + \renewcommand*{\glsinlineseparator}{,\space}% original: ;\space + \renewcommand*{\glsinlinesubseparator}{,\space}% + \renewcommand*{\glsinlineparentchildseparator}{:\space}% + \renewcommand*{\glsinlinepostchild}{}% + \renewcommand*{\glspostinline}{.\space}% original: \glspostdescription\space + \renewcommand*{\glsinlinenameformat}[2]{\glstarget{##1}{##2}}% + \renewcommand*{\glsinlinedescformat}[3]{% + \,=\,\linebreak[1]##1}% original: \space#1 + \renewcommand*{\glsinlineemptydescformat}[2]{}% + \renewcommand*{\glsinlinesubnameformat}[2]{% + \glstarget{##1}{##2}}%original: \glstarget{#1}{} + \renewcommand*{\glsinlinesubdescformat}[3]{% + \,=\,\linebreak[1]##1}%original: #1 +% \end{macrocode} +% We redefine \cs{glossarysection} \emph{within} the glossary style definition. This means that any glossary that uses this style will \emph{not} have a section header. Other glossaries will not be affected unless the author uses |\setglossarystyle{inline}| before \cs{makeglossaries}. +% +% \begin{macrocode} + \renewcommand*{\glossarysection}[2][\@gls@title]{}% no section header }% }% - \@do@newglossaryentry -} -\newcommand*{\SetLeipzigStyle}{% - \renewcommand{\newacronym}[4][]{% - \ifx\@glsacronymlists\@empty - \def\@glo@type{\leipzigtype}% - \setkeys{glossentry}{##1}% - \DeclareAcronymList{\@glo@type}% - \SetLeipzigDisplayStyle{\@glo@type}% - \fi - \glskeylisttok{##1}% - \glslabeltok{##2}% - \glsshorttok{##3}% - \glslongtok{##4}% - \newacronymhook - \LeipzigAcronymDef +% \end{macrocode} +% For systems with \glossaries{} v3.02, \leipzig{} added a separator between the long and short forms with \cs{glsinlineshortlongseparator}. (This functionality was added in \glossaries{} v3.03 with \cs{glsinline(sub)descformat}. +% +% \begin{macrocode} + {% + \renewglossarystyle{inline}{% + \renewenvironment{theglossary}% + {% + \def\gls@inlinesep{}% + \def\gls@inlinesubsep{}% + \def\gls@inlineshortlongsep{% + \glsinlineshortlongseparator}% added this v1.0 + }% + {\glspostinline}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand*{\glossaryentryfield}[5]{% + \gls@inlinesep + \glsentryitem{##1}\glstarget{##1}{##2}% + \def\glo@desc{##3}% + \def\@no@post@desc{\nopostdesc}% + \ifx\glo@desc\@no@post@desc + \else + \ifstrempty{##3}{}{\gls@inlineshortlongsep##3}% + \fi + \ifglshaschildren{##1}% + {% + \glsresetsubentrycounter + \glsinlineparentchildseparator + \def\gls@inlinesubsep{}% + }% + {}% + \def\gls@inlinesep{\glsinlineseparator}% + }% + \renewcommand*{\glossarysubentryfield}[6]{% + \gls@inlinesubsep% + \glstarget{##2}{}% + \glssubentryitem{##2}##4% + \def\gls@inlinesubsep{\glsinlinesubseparator}% + }% + \renewcommand*{\glsgroupskip}{}% + \newcommand*{\glsinlineshortlongseparator}{% + \,=\,\linebreak[1]}% added this v1.0 + \renewcommand*{\glsinlineseparator}{,\space}% original: ;\space + \renewcommand*{\glsinlinesubseparator}{,\space}% + \renewcommand*{\glsinlineparentchildseparator}{:\space}% + \renewcommand*{\glspostinline}{.\space}% changed from . + % \renewcommand{\glsnamefont}[1]{\textsc{##1}}% removed v2.0 + \renewcommand*{\glossarysection}[2][\@gls@title]{}% added v1.0 + }% + }% +% \end{macrocode} +% Else, if \textsf{glossary-inline} is not loaded, \cs{relax}. +% +% \begin{macrocode} +}{\relax}% +% \end{macrocode} +%\end{macro} +%\subsection{Creating gloss abbreviations} +%\begin{macro}{\newleipzig} +% Define \cs{newleipzig} to do the right thing whether \glossaries{} is loaded or~not. +% +% \begin{macrocode} +\@ifpackageloaded{glossaries}{% +% \end{macrocode} +%If \glossaries{} is loaded, \cs{newleipzig} calls \cs{newacronym} with type \cs{leipzigtype}. It then calls \cs{@newleipzig}, which creates a shortcut macro. +% +% \begin{macrocode} + \newcommand{\newleipzig}[4][]{% + \bgroup + {\newacronym[type=\leipzigtype,#1]{#2}{#3}{#4}}% + \@newleipzig#2\@nil% }% -%% \@for\@gls@type:=\@glsacronymlists\do{% sets style for all acronymlists? -%%%% \SetCustomDisplayStyle{\@gls@type}% -%% \SetLeipzigDisplayStyle{\@gls@type}% -%% }% -}% -\SetLeipzigStyle -%%Normally would have |\leipzigfont{#2}|, but I coded the leipzigfont directly into the short form. How else to do it? -\renewcommand{\acrfullformat}[2]{#1\space(#2)} -\newcommand{\newleipzig}[4][]{% - \bgroup - \tlist@if@empty@nTF{#1}% - {\newacronym[type=\leipzigtype]{#2}{#3}{#4}}% - {\newacronym[type=\leipzigtype,#1]{#2}{#3}{#4}}% - % \newacronym[type=\leipzigtype][#1]{n#2}{n#3}{Non-#4} - \@newleipzig(#3)#2\@nil}% - \def\@newleipzig(#1)#2#3\@nil{% % \end{macrocode} -% If the |leipzig@donotindex| boolean is toggled, then |\gls| will not be called whenever the macro abbreviation is called. That way, these abbreviations are never indexed and won't show up in the glossary, but they will be formatted just like other abbreviations. +% \cs{newleipzig} passes the glossary label (parameter \#2) to \cs{@newleipzig}, which actually reads in the first token of the label separately than the remainder of the label. +% % \begin{macrocode} - \ifleipzig@donotindex - \uppercase{\expandafter\gdef\csname #2}#3\endcsname{\leipzigfont{#1}} + \def\@newleipzig#1#2\@nil{% % \end{macrocode} -%Otherwise, |\gls| is called, and any time the macro abbreviation is used, this acronym will be indexed and appear in the glossary. +% A globally-defined macro is created from the label after capitalizing the first token. If the |\leipzigdonotindex| boolean is toggled true, then this macro is defined to print the short form of the abbreviation in \cs{leipzigfont}, which is initialized to smallcaps. +% +% \begin{macrocode} + \ifleipzigdonotindex + \uppercase{\expandafter\gdef\csname #2}#2\endcsname{% + \leipzigfont{\glsentryshort{#1#2}}% + }% +% \end{macrocode} +%If \cs{leipzigdonotindex} is false, then the macro is defined to call \cs{acrshort} or \cs{acrshort*}, depending on whether the abbreviation should include a hyperlink to the glossary or not. +% +% Note that \cs{glsentryshort} and \cs{acrshort} both display the short form of the acronym. Neither changes the first use flag. The only differences are that \cs{acrshort} indexes the acronym for use in the glossary and is formatted according to the short form of the acronym style \texttt{long-lpz-short}, but \cs{glsentryshort} does not index the acronym nor format the text. +% % \begin{macrocode} + \else + \ifleipzighyper + \uppercase{\expandafter\gdef\csname #1}#2\endcsname{% + \acrshort{#1#2}% + }% \else - \uppercase{\expandafter\gdef\csname #2}#3\endcsname{\gls{#2#3}} - \fi - \egroup - }% end if glossaries loaded + \uppercase{\expandafter\gdef\csname #1}#2\endcsname{% + \acrshort*{#1#2}% + }% + \fi + \fi + \egroup +% \end{macrocode} +% End |\def\@newleipzig|. +% +% \begin{macrocode} + }% +% \end{macrocode} +% \begin{macro}{\renewleipzig} +% This macro is provided to allow authors to change previously-defined gloss abbreviations, such as the pre-defined abbreviations that come bundled with \leipzig{}. This command is courtesy egreg, from \url{http://tex.stackexchange.com/questions/277292/redefining-existing-abbreviations-for-leipzig-sty}. +% +% \begin{macrocode} +\newcommand{\renewleipzig}[2][]{% + \if@leipzig@defined{#2} + {% + \renew@leipzig{#1}{#2}% + }% + {% + \PackageError{leipzig} + {Abbreviation `#2' undefined} + {No `#2` abbreviation is defined, use \string\newleipzig}% + \@gobbletwo + }% +} +\def\if@leipzig@defined#1{% + \uppercase\expandafter{\expandafter\ifcsname\@car#1\@nil}\@cdr#1\@nil\endcsname + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\def\renew@leipzig#1#2{% + \ifcsname glo@\glsdetoklabel{#2}@name\endcsname + \csundef{glo@\glsdetoklabel{#2}@name} + \fi + \if\relax\detokenize{#2}\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\newleipzig{#2}}{\newleipzig[#1]{#2}}% +}% % \end{macrocode} -%If \glossaries{} not loaded, then the code is much shorter: +% \end{macro} +%If \glossaries{} not loaded, then the code for \cs{newleipzig} and \cs{renewleipzig} is much shorter. +% % \begin{macrocode} -\else % if glossaries not loaded +}{% \newcommand{\newleipzig}[4][]{\@newleipzig(#3)#2\@nil}% + \newcommand{\renewleipzig}[4][]{% + \if@leipzig@defined{#2} + {% + \@newleipzig(#3)#2\@nil% + }% + {% + \PackageError{leipzig} + {Abbreviation `#2' undefined} + {No `#2` abbreviation is defined, use \string\newleipzig}% + \@gobbletwo + }% + } \def\@newleipzig(#1)#2#3\@nil{% \uppercase{\expandafter\gdef\csname #2}#3\endcsname{\leipzigfont{#1}} }% -\fi +} % \end{macrocode} -%Finally, load the standard gloss abbreviations. +%\end{macro} +% Load the list of standard abbreviations. +% % \begin{macrocode} -\input{leipzig.tex} -\ifleipzig@donotindex\leipzig@donotindexfalse\fi +\@ifpackageloaded{glossaries}{% + \loadglsentries{leipzig.tex}% + }% + {\input{leipzig.tex}}% % \end{macrocode} % \iffalse -% \begin{macrocode} % +% \fi +% \iffalse +%<*abbrvs> +% \fi +%\subsection{leipzig.tex} +% The following is the list of pre-defined standards which are stripped and +% written to leipzig.tex. +% \begin{macrocode} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% This is a simple list of newcommands which create shortcuts for %% +%% standard linguistic glosses (see the Leipzig Glossing rules, %% +%% http://www.eva.mpg.de/lingua/resources/glossing-rules.php %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Format of examples: % +% +% All leipzig gloss macros are of the form {\Label} +% +% where Label is a capitalized version of the gloss label, which is the first +% argument passed to \newleipzig. In most cases, the label has been chosen +% to match the abbreviations suggested in the Leipzig glossing rules. +% +% That is, \Acc{} and {\Acc} will print \textsc{acc}, etc. +% +% In a few cases, the label does not match the abbreviation, because the +% macro that would have been created is already defined in LaTeX. +% \end{macrocode} +% If the \hbox{[nostandards]} option was used, then do not index the following. +% \begin{macrocode} +\makeatletter\ifleipzig@nostandards\leipzigdonotindextrue\fi\makeatother + +\newleipzig{abl}{abl}{ab\-la\-tive} %ablative +\newleipzig{abs}{abs}{ab\-so\-lu\-tive} %absolutive +\newleipzig{acc}{acc}{ac\-cusa\-tive} %accusative +\newleipzig{adj}{adj}{ad\-jec\-tive} %adjective +\newleipzig{adv}{adv}{ad\-ver\-bial} %adverb(ial) +\newleipzig{aarg}{a}{agent} %agent-like argument of + %canonical transitive verb +\newleipzig{agr}{agr}{agreement} %agreement +\newleipzig{all}{all}{al\-la\-tive} %allative +\newleipzig{antip}{antip}{anti\-pas\-sive} %antipassive +\newleipzig{appl}{appl}{ap\-plica\-tive} %applicative +\newleipzig{art}{art}{article} %article +\newleipzig{aux}{aux}{aux\-il\-iary} %auxiliary +\newleipzig{ben}{ben}{bene\-fac\-tive} %benefactive +\newleipzig{caus}{caus}{causative} %causative +\newleipzig{clf}{clf}{clas\-si\-fi\-er} %classifier +\newleipzig{com}{com}{comi\-ta\-tive} %comitative +\newleipzig{comp}{comp}{com\-ple\-men\-ti\-zer} %complementizer +\newleipzig{compl}{compl}{com\-ple\-tive} %completive +\newleipzig{cond}{cond}{con\-di\-tion\-al} %conditional +\newleipzig{cop}{cop}{cop\-u\-la} %copula +\newleipzig{cvb}{cvb}{con\-verb} %converb +\newleipzig{dat}{dat}{da\-tive} %dative +\newleipzig{decl}{decl}{declarative} %declarative +\newleipzig{def}{def}{definite} %definite +\newleipzig{dem}{dem}{demonstrative} %demonstrative +\newleipzig{det}{det}{determiner} %determiner +\newleipzig{dist}{dist}{dis\-tal} %distal +\newleipzig{distr}{distr}{dis\-tri\-bu\-tive} %distributive +\newleipzig{du}{du}{dual} %dual +\newleipzig{dur}{dur}{dur\-ative} %durative +\newleipzig{erg}{erg}{erg\-ative} %ergative +\newleipzig{excl}{excl}{ex\-clu\-sive} %exclusive +\newleipzig{f}{f}{feminine} %feminine +\newleipzig{foc}{foc}{focus} %focus +\newleipzig{fut}{fut}{future} %future +\newleipzig{gen}{gen}{gen\-i\-tive} %genitive +\newleipzig{imp}{imp}{imperative} %imperative +\newleipzig{incl}{incl}{inclusive} %inclusive +\newleipzig{ind}{ind}{indicative} %indicative +\newleipzig{indf}{indf}{indefinite} %indefinite +\newleipzig{inf}{inf}{in\-fini\-tive} %infinitive +\newleipzig{ins}{ins}{instrumental} %instrumental +\newleipzig{intr}{intr}{in\-tran\-si\-tive} %intransitive +\newleipzig{ipfv}{ipfv}{im\-per\-fec\-tive} %imperfective +\newleipzig{irr}{irr}{ir\-real\-is} %irrealis +\newleipzig{loc}{loc}{loc\-ative} %locative +\newleipzig{m}{m}{masculine} %masculine +\newleipzig{n}{n}{neuter} %neuter +\newleipzig{neg}{neg}{negative} %negation, negative +\newleipzig{nmlz}{nmlz}{nom\-i\-nal\-iz\-er} %nominalizer/nominalization +\newleipzig{nom}{nom}{nom\-in\-ative} %nominative +\newleipzig{obj}{obj}{object} %object +\newleipzig{obl}{obl}{ob\-lique} %oblique +\newleipzig{pass}{pass}{passive} %passive +\newleipzig{parg}{p}{patient} %patient +\newleipzig{pfv}{pfv}{per\-fec\-tive} %perfective +\newleipzig{pl}{pl}{plural} %plural +\newleipzig{poss}{poss}{possessive} %possessive +\newleipzig{pred}{pred}{pred\-i\-ca\-tive} %predicative +\newleipzig{prf}{prf}{perfect} %perfect +\newleipzig{prs}{prs}{present} %present +\newleipzig{prog}{prog}{progressive} %progressive +\newleipzig{proh}{proh}{prohibitive} %prohibitive +\newleipzig{prox}{prox}{prox\-i\-mal} %proximal/proximate +\newleipzig{pst}{pst}{past} %past +\newleipzig{ptcp}{ptcp}{participle} %participle +\newleipzig{purp}{purp}{pur\-po\-sive} %purposive +\newleipzig{q}{q}{question particle} %question particle/marker +\newleipzig{quot}{quot}{quot\-ative} %quotative +\newleipzig{recp}{recp}{recip\-ro\-cal} %reciprocal +\newleipzig{refl}{refl}{reflexive} %reflexive +\newleipzig{rel}{rel}{relative} %relative +\newleipzig{res}{res}{re\-sul\-ta\-tive} %resultative +\newleipzig{sbj}{sbj}{subject} %subject +\newleipzig{subj}{subj}{sub\-junc\-tive} %subjunctive +\newleipzig{sg}{sg}{singular} %singular +\newleipzig{sarg}{s}{argument of intransitive verb} + %single argument of intransitive verb +\newleipzig{top}{top}{topic} %topic +\newleipzig{tr}{tr}{tran\-si\-tive} %transitive +\newleipzig{voc}{voc}{voc\-ative} %vocative + +%% Define short versions of person + number: +\newleipzig{first}{1}{first person}% +\newleipzig{second}{2}{second person}% +\newleipzig{third}{3}{third person}% + +\newcommand{\Fsg}{{\First}{\Sg}}% +\newcommand{\Fdu}{{\First}{\Du}}% +\newcommand{\Fpl}{{\First}{\Pl}}% +\newcommand{\Ssg}{{\Second}{\Sg}}% +\newcommand{\Sdu}{{\Second}{\Du}}% +\newcommand{\Spl}{{\Second}{\Pl}}% +\newcommand{\Tsg}{{\Third}{\Sg}}% +\newcommand{\Tdu}{{\Third}{\Du}}% +\newcommand{\Tpl}{{\Third}{\Pl}}% + +\makeatletter % \end{macrocode} +%If \glossaries{} is loaded, calculate the widest name based on this set of pre-defined abbreviations. It is probably vaguely accurate; if the author needs to, they can always redefine this in the preamble. +% +% \begin{macrocode} +\@ifpackageloaded{glossaries}{% if glossary-tree loaded + \glsfindwidesttoplevelname[\leipzigtype]% +}{\relax}% +% \end{macrocode} +% Turn indexing back on if it was off. +% +% \begin{macrocode} +\leipzigdonotindexfalse +\makeatother + +% \end{macrocode} +% \iffalse +% % \fi % \Finale -\endinput \ No newline at end of file +\endinput + +%\subsubsection{leipzigsuper style} +% Modeled on super style. +% +% \begin{macrocode} +\@ifpackageloaded{glossaries}{% +\RequirePackage{supertabular} +\@ifundefined{glsdescwidth}{% + \newlength\glsdescwidth + \setlength{\glsdescwidth}{0.6\hsize} +}{} +\@ifundefined{glspagelistwidth}{% + \newlength\glspagelistwidth + \setlength{\glspagelistwidth}{0.1\hsize} +}{} +% \end{macrocode} +% Super original had |\begin{supertabular}{lp{\glsdescwidth}}|. I added the |@{}| on either +% side, so it doesn't indent. +% +% |\glossentrystretch| is defined by leipzig. Provide a hook to increase space between entries. +% +%|\leipzigdesccapitalizefalse| does nothing +% +% \begin{macrocode} +\newcommand{\leipzig@glossentrydesc}[1]{\glossentrydesc{#1}}% +\ifleipzigdesccapitalize + \renewcommand{\leipzig@glossentrydesc}[1]{\Glossentrydesc{#1}}% +\fi +\newglossarystyle{leipzigsuper}{% + \renewcommand{\arraystretch}{\glossentrystretch}% + \renewenvironment{theglossary}% + {\tablehead{}\tabletail{}% + \begin{supertabular}{@{} lp{\glsdescwidth} @{}}}% + {\end{supertabular}}% + \renewcommand*{\glossaryheader}{}% at the start of each entry + \renewcommand*{\glsgroupheading}[1]{}% at the start of each group + \renewcommand{\glossentry}[2]{% + \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} & + \leipzig@glossentrydesc{##1}% + \glspostdescription% + %\space ##2% no number list + \tabularnewline + }% +% \end{macrocode} +% The normal super style suppresses the name of subentries, but we probably do +% not want that. +% \begin{macrocode} + \renewcommand{\subglossentry}[3]{% + \glsentryitem{##2}\glstarget{##2}{\glossentryname{##2}} & + \leipzig@glossentrydesc{##2}% + \glspostdescription% + %\space##3% no number list + \tabularnewline + }% + \glsnogroupskiptrue + \ifglsnogroupskip + \renewcommand*{\glsgroupskip}{}% + \else + \renewcommand*{\glsgroupskip}{& \tabularnewline}% + \fi + \renewcommand*{\glspostdescription}{}% + \renewcommand*{\glsnamefont}[1]{##1}% don't print in bold + \renewcommand{\glossentrystretch}{1.3}% + \leipzigdesccapitalizetrue + \setglossarypreamble[\leipzigtype]{}% +}% +}{}% if glossaries not loaded, do nothing +% \end{macrocode} \ No newline at end of file diff --git a/Master/texmf-dist/source/latex/leipzig/leipzig.ins b/Master/texmf-dist/source/latex/leipzig/leipzig.ins index 7156c254aca..67ba227bce3 100644 --- a/Master/texmf-dist/source/latex/leipzig/leipzig.ins +++ b/Master/texmf-dist/source/latex/leipzig/leipzig.ins @@ -1,30 +1,7 @@ -%% Copyright (C) 2013 by Natalie Weber - -% 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 Natalie Weber. -% -% This work consists of the files leipzig.dtx and leipzig.ins -% and the derived file leipzig.sty. - \input docstrip.tex \keepsilent \askforoverwritefalse -\usedir{tex/latex/leipzig} - \preamble -This is a generated file. - ---------------------------------------------------------------- leipzig --- A package to typeset and index linguistic gloss abbreviations. E-mail: natalie.a.weber@gmail.com @@ -32,8 +9,7 @@ Released under the LaTeX Project Public License v1.3c or later See http://www.latex-project.org/lppl.txt ---------------------------------------------------------------- - -Copyright (C) 2013 by Natalie Weber +Copyright (C) 2017 by Natalie Weber This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 @@ -49,31 +25,34 @@ This work has the LPPL maintenance status `maintained'. The Current Maintainer of this work is Natalie Weber. -This work consists of the files leipzig.dtx, - leipzig.ins - leipzig.tex - -and the derived files leipzig.sty and leipzig.pdf. +This work consists of the file leipzig.dtx, +and the derived files + README.md, + leipzig.ins, + leipzig.tex, + leipzig.sty, and + leipzig.pdf \endpreamble +\postamble + +Copyright (C) 2017 by Natalie Weber + +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. +\endpostamble +\usedir{tex/latex/leipzig} +\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}} +\generate{\file{\jobname.tex}{\from{\jobname.dtx}{abbrvs}}} +\endbatchfile + + + -\generate{\file{README.txt}{\from{leipzig.dtx}{readme}}} -\nopostamble -\generate{\file{leipzig.sty}{\from{leipzig.dtx}{package}}} -%\generate{\file{leipzig.tex}{\from{leipzig.dtx}{glossary}}} - -\obeyspaces -\Msg{****************************************************} -\Msg{* *} -\Msg{* To finish the installation you have to move the *} -\Msg{* following files into a directory searched by TeX:*} -\Msg{* *} -\Msg{* leipzig.sty, leipzig.tex *} -\Msg{* *} -\Msg{* To produce the documentation run the file *} -\Msg{* leipzig.dtx through LaTeX. *} -\Msg{* *} -\Msg{* Happy TeXing! *} -\Msg{* *} -\Msg{****************************************************} -\endbatchfile \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/leipzig/leipzig.sty b/Master/texmf-dist/tex/latex/leipzig/leipzig.sty index 4dd8d510df8..c6b0b8387b1 100644 --- a/Master/texmf-dist/tex/latex/leipzig/leipzig.sty +++ b/Master/texmf-dist/tex/latex/leipzig/leipzig.sty @@ -5,8 +5,6 @@ %% The original source files were: %% %% leipzig.dtx (with options: `package') -%% This is a generated file. -%% %% ---------------------------------------------------------------- %% leipzig --- A package to typeset and index linguistic gloss abbreviations. %% E-mail: natalie.a.weber@gmail.com @@ -14,8 +12,7 @@ %% See http://www.latex-project.org/lppl.txt %% ---------------------------------------------------------------- %% -%% -%% Copyright (C) 2013 by Natalie Weber +%% Copyright (C) 2017 by Natalie Weber %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -31,175 +28,479 @@ %% %% The Current Maintainer of this work is Natalie Weber. %% -%% This work consists of the files leipzig.dtx, -%% leipzig.ins -%% leipzig.tex -%% -%% and the derived files leipzig.sty and leipzig.pdf. +%% This work consists of the file leipzig.dtx, +%% and the derived files +%% README.md, +%% leipzig.ins, +%% leipzig.tex, +%% leipzig.sty, and +%% leipzig.pdf %% \NeedsTeXFormat{LaTeX2e}[1996/10/24]% \ProvidesPackage{leipzig}% - [2013/05/26 v1.0 Leipzig package for linguistic abbreviations]% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% This is a simple list of newcommands which create shortcuts for %% -%% standard linguistic glosses (see the Leipzig Glossing rules, %% -%% http://www.eva.mpg.de/lingua/resources/glossing-rules.php %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\long\def\tlist@if@empty@nTF #1{% - \expandafter\ifx\expandafter\\\detokenize{#1}\\% - \expandafter\@firstoftwo% - \else% - \expandafter\@secondoftwo% - \fi% -}% -\newif\ifleipzig@glossaries\leipzig@glossariesfalse + [2017/06/16 v2.0 Leipzig package for linguistic abbreviations]% + + + + +\newif\ifleipzig@glossaries\leipzig@glossariestrue \newif\ifleipzig@noglossaries\leipzig@noglossariesfalse -\newif\ifleipzig@donotindex\leipzig@donotindexfalse +\newif\ifleipzig@sepglosses\leipzig@sepglossesfalse +\newif\ifleipzig@nostandards\leipzig@nostandardsfalse +\newif\ifleipzigdonotindex\leipzigdonotindexfalse +\newcommand*{\@leipzig@default@style}{inline} +\newif\ifleipzighyper\leipzighyperfalse +\newif\ifleipzignonumbers\leipzignonumberstrue +\newcommand{\leipzigfont}[1]{\textsc{#1}}% \DeclareOption{glossaries}{\leipzig@glossariestrue} -\DeclareOption{noglossaries}{\leipzig@noglossariestrue} -\DeclareOption{nostandards}{\leipzig@donotindextrue} +\DeclareOption{noglossaries}{% + \leipzig@glossariesfalse + \leipzig@noglossariestrue +}% +\DeclareOption{glosses}{\leipzig@sepglossestrue} +\DeclareOption{leipzig}{\leipzig@sepglossestrue} +\DeclareOption{nostandards}{\leipzig@nostandardstrue} +\DeclareOption{block}{% + \renewcommand*{\@leipzig@default@style}{leipzigalttree}% +}% +\DeclareOption{mcolblock}{% + \renewcommand*{\@leipzig@default@style}{leipzigmcolalttree}% +}% +\DeclareOption{inline}{% + \renewcommand*{\@leipzig@default@style}{inline}% +}% +\DeclareOption{leipzighyper}{\leipzighypertrue} +\DeclareOption{leipzignohyper}{\leipzighyperfalse} \DeclareOption*{% - \PassOptionsToPackage{\CurrentOption}{glossaries}% + \PassOptionsToPackage{\CurrentOption}{glossaries}% }% \ProcessOptions\relax -\@ifpackageloaded{glossaries}{% true text - \ifleipzig@noglossaries\leipzig@glossariesfalse\relax - \else\leipzig@glossariestrue\relax\fi -}{% false text - \ifleipzig@glossaries\PackageWarning{leipzig}{% - glossaries package not loaded. Load glossaries - package at some point.}% - \else\leipzig@glossariesfalse\relax\fi -}% -\@ifpackageloaded{glossary-inline}{% renew inline -\renewglossarystyle{inline}{% - \renewenvironment{theglossary}% - {% - \def\gls@inlinesep{}% - \def\gls@inlinesubsep{}% - \def\gls@inlineshortlongsep{% - \glsinlineshortlongseparator}% added this - }% - {\glspostinline}% - \renewcommand*{\glossaryheader}{}% - \renewcommand*{\glsgroupheading}[1]{}% - \renewcommand*{\glossaryentryfield}[5]{% - \gls@inlinesep - \glsentryitem{##1}\glstarget{##1}{##2}% - \def\glo@desc{##3}% - \def\@no@post@desc{\nopostdesc}% - \ifx\glo@desc\@no@post@desc +\ifleipzig@noglossaries\relax +\else + \ifleipzig@glossaries + \@ifpackageloaded{glossaries}% + {\relax}% + {\IfFileExists{glossaries.sty}{% + \RequirePackage{glossaries}% + }% + {\PackageError{leipzig}% + {glossaries.sty not found.}% + {Install glossaries.sty or use [noglossaries] option.}% + }% + \IfFileExists{glossary-tree.sty}{% + \RequirePackage{glossary-tree}% + }% + {\PackageWarning{leipzig}% + {glossary-tree.sty not found.}% + {Install glossary-tree.sty to use leipzigalttree style.}% + }% + \IfFileExists{glossary-mcols.sty}{% + \RequirePackage{glossary-mcols}% + }% + {\PackageWarning{leipzig}% + {glossary-mcols.sty not found.}% + {Install glossary-mcols.sty to use leipzigmcolalttree style.}% + }% + \IfFileExists{glossary-inline.sty}{% + \RequirePackage{glossary-inline}% + }% + {\PackageWarning{leipzig}% + {glossary-inline.sty not found.}% + {Install glossary-inline.sty to use inline style.}% + }% + }% + \fi +\fi +\@ifpackageloaded{glossaries}{% + \newcommand*{\leipzigtype}{\glsdefaulttype}% + \newcommand{\leipzigname}{Abbreviations}% + \providecommand*{\printglosses}[1][]{}% + \providecommand*{\printleipzig}[1][]{}% + \newcommand{\firstleipzigfont}[1]{\leipzigfont{#1}}% + \newif\ifleipzigdesccapitalize\leipzigdesccapitalizefalse + \newcommand*{\leipzig@glossentrydesc}[1]{% + \ifleipzigdesccapitalize + \expandafter\ifx#1\nopostdesc + \glossentrydesc{#1}% + \else\Glossentrydesc{#1}% + \fi \else - \ifstrempty{##3}{}{\gls@inlineshortlongsep##3}% + \glossentrydesc{#1}% \fi - \ifglshaschildren{##1}% + }% + \newcommand*{\glspostnamespace}{\space}% +}{}% +\@ifpackageloaded{glossaries}{% + \ifleipzig@sepglosses + \newglossary[lpz]{leipzig}{lzs}{lzo}{\leipzigname}% + \renewcommand*{\leipzigtype}{leipzig}% + \newcommand*{\gls@tr@set@leipzig@toctitle}{% + \translatelet{\glossarytoctitle}{Abbreviations}% + }% + \else + \renewcommand*{\glossaryname}{\leipzigname} + \fi + \DeclareAcronymList{\leipzigtype}% + \newacronymstyle{long-lpz-short}% {% - \glsresetsubentrycounter - \glsinlineparentchildseparator - \def\gls@inlinesubsep{}% + \GlsUseAcrEntryDispStyle{long-short}% + }% + {% + \GlsUseAcrStyleDefs{long-short}% + \renewcommand{\acronymfont}[1]{\leipzigfont{##1}}% + \renewcommand{\firstacronymfont}[1]{\firstleipzigfont{##1}}% + \renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}% + }% + \setacronymstyle{long-lpz-short} +\AtBeginDocument{% + \if\@glossary@default@style\relax + \setglossarystyle{\@leipzig@default@style}% + \fi + \ifx\@leipzig@default@style\relax + \renewcommand*{\printglosses}[1][]{% + \printglossary[type=\leipzigtype,#1]% + }% + \else + \ifleipzignonumbers + \renewcommand*{\printglosses}[1][]{% + \printglossary[type=\leipzigtype,% + style=\@leipzig@default@style,% + nonumberlist,#1] + }% + \else + \renewcommand*{\printglosses}[1][]{% + \printglossary[type=\leipzigtype,% + style=\@leipzig@default@style,#1] + }% + \fi + \fi + \let\printleipzig\printglosses + \renewcommand*{\printglossaries}{% + \forallglossaries{\@@glo@type}{% + \edef\tempa{\@@glo@type}% + \edef\tempb{\leipzigtype}% + \ifx\tempa\tempb% + \printglosses% + \else + \printglossary[type=\@@glo@type]% + \fi% }% - {}% - \def\gls@inlinesep{\glsinlineseparator}% }% - \renewcommand*{\glossarysubentryfield}[6]{% - \gls@inlinesubsep% - \glstarget{##2}{}% - \glssubentryitem{##2}##4% - \def\gls@inlinesubsep{\glsinlinesubseparator}% +}% +}% +{\relax}% +\@ifpackageloaded{glossaries}{% + \forallglossaries[\leipzigtype]{\@@glo@type}{% + \glsnogroupskiptrue + \glsnopostdottrue }% - \renewcommand*{\glsgroupskip}{}% -} -\newcommand*{\glsinlineshortlongseparator}{\,=\,\linebreak[1]}% added this -\renewcommand*{\glsinlineseparator}{,\space}% changed from ;\space -\renewcommand*{\glsinlinesubseparator}{,\space} -\renewcommand*{\glsinlineparentchildseparator}{:\space} -\renewcommand*{\glspostinline}{.\space}% changed from . -\renewcommand{\glsnamefont}[1]{\textsc{#1}}% abbrv in glossary are \sc -\renewcommand*{\glossarysection}[2][]{}% no section name -}{\relax}% if glossary-inline not loaded -\newcommand{\leipzigfont}[1]{\textsc{#1}}% -\newcommand{\firstleipzigfont}[1]{\leipzigfont{#1}}% -\ifleipzig@glossaries %if glossaries package loaded - \renewcommand*{\acrpluralsuffix}{\textup{\glspluralsuffix}}% - \newcommand{\leipzigname}{Abbreviations} - \newglossary{leipzig}{lzs}{lzo}{\leipzigname} - \newcommand{\leipzigtype}{leipzig} -%% The following commands are based on the Custom Acronym commands in the glossaries package. -\newcommand*{\SetLeipzigDisplayStyle}[1]{% - \defglsdisplay[#1]{\leipzigfont{##1}##4}% - \defglsdisplayfirst[#1]{\firstleipzigfont{##1}##4}% -} -\newcommand*{\CustomLeipzigFields}{% - name={\the\glsshorttok},% - description={\the\glslongtok},% - symbol={\the\glsshorttok},% - first={\firstleipzigfont{\the\glsshorttok}},% - firstplural={\firstleipzigfont{\the\glsshorttok}\noexpand\acrpluralsuffix},% - text={\leipzigfont{\the\glsshorttok}},% - plural={\leipzigfont{\the\glsshorttok}\noexpand\acrpluralsuffix}% -} -\newcommand*{\LeipzigAcronymDef}{% - \protected@edef\@do@newglossaryentry{% - \noexpand\newglossaryentry{\the\glslabeltok}% - {% - type=\leipzigtype,% - short={\leipzigfont{\the\glsshorttok}},% used in e.g. \acrshort - shortplural={\leipzigfont{\the\glsshorttok}\noexpand\acrpluralsuffix},% - long={\the\glslongtok},% - longplural={\the\glslongtok\noexpand\acrpluralsuffix},% - user1={\the\glsshorttok},% - user2={\the\glsshorttok\noexpand\acrpluralsuffix},% - user3={\the\glslongtok},% - user4={\the\glslongtok\noexpand\acrpluralsuffix},% - \CustomLeipzigFields,% - \the\glskeylisttok +}{\relax}% +\@ifpackageloaded{glossary-tree}{% + \newglossarystyle{leipzigalttree}{% + \setglossarystyle{alttree}% + \renewenvironment{theglossary}% + {\def\@gls@prevlevel{-1}% + \mbox{}\par + }% + {\par}% + \renewcommand*{\glstreenamefmt}[1]{##1} + \renewcommand{\glossentry}[2]{% + \ifnum\@gls@prevlevel=0\relax + \else + \settowidth{\glstreeindent}{% + \glstreenamefmt{\@glswidestname\glspostnamespace}% + }% + \fi + \hangindent\glstreeindent + \parindent\glstreeindent + \makebox[0pt][r]{% + \glstreenamebox{\glstreeindent}{% + \glsentryitem{##1}\glstreenamefmt{% + \glstarget{##1}{\glossentryname{##1}}% + }% + }% + }% + \ifglshassymbol{##1}{(\glossentrysymbol{##1})\space}{}% + \leipzig@glossentrydesc{##1}\glspostdescription\space ##2\par + \def\@gls@prevlevel{0}% + }% + \renewcommand{\subglossentry}[3]{% + \ifnum##1=1\relax + \glssubentryitem{##2}% + \fi + \ifnum\@gls@prevlevel=##1\relax + \else + \@ifundefined{@glswidestname\romannumeral##1}{% + \settowidth{\gls@tmplen}{% + \glstreenamefmt{\@glswidestname\glspostnamespace}}% + }{% + \settowidth{\gls@tmplen}{\glstreenamefmt{% + \csname @glswidestname\romannumeral##1\endcsname + \glspostnamespace}}% + }% + \ifnum\@gls@prevlevel<##1\relax + \setlength\glstreeindent\gls@tmplen + \addtolength\glstreeindent\parindent + \parindent\glstreeindent + \else + \@ifundefined{@glswidestname\romannumeral\@gls@prevlevel}{% + \settowidth{\glstreeindent}{\glstreenamefmt{% + \@glswidestname\glspostnamespace}}}{% + \settowidth{\glstreeindent}{\glstreenamefmt{% + \csname @glswidestname\romannumeral\@gls@prevlevel + \endcsname\glspostnamespace}}}% + \addtolength\parindent{-\glstreeindent}% + \setlength\glstreeindent\parindent + \fi + \fi + \hangindent\glstreeindent + \makebox[0pt][r]{\glstreenamebox{\gls@tmplen}{% + \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}}}% + \ifglshassymbol{##2}{(\glossentrysymbol{##2})\space}{}% + \leipzig@glossentrydesc{##2}\glspostdescription\space ##3\par + \def\@gls@prevlevel{##1}% }% }% - \@do@newglossaryentry -} -\newcommand*{\SetLeipzigStyle}{% - \renewcommand{\newacronym}[4][]{% - \ifx\@glsacronymlists\@empty - \def\@glo@type{\leipzigtype}% - \setkeys{glossentry}{##1}% - \DeclareAcronymList{\@glo@type}% - \SetLeipzigDisplayStyle{\@glo@type}% - \fi - \glskeylisttok{##1}% - \glslabeltok{##2}% - \glsshorttok{##3}% - \glslongtok{##4}% - \newacronymhook - \LeipzigAcronymDef + \newglossarystyle{block}{% + \setglossarystyle{leipzigalttree}% }% -%% \@for\@gls@type:=\@glsacronymlists\do{% sets style for all acronymlists? -%%%% \SetCustomDisplayStyle{\@gls@type}% -%% \SetLeipzigDisplayStyle{\@gls@type}% -%% }% }% -\SetLeipzigStyle -%%Normally would have |\leipzigfont{#2}|, but I coded the leipzigfont directly into the short form. How else to do it? -\renewcommand{\acrfullformat}[2]{#1\space(#2)} -\newcommand{\newleipzig}[4][]{% - \bgroup - \tlist@if@empty@nTF{#1}% - {\newacronym[type=\leipzigtype]{#2}{#3}{#4}}% - {\newacronym[type=\leipzigtype,#1]{#2}{#3}{#4}}% - % \newacronym[type=\leipzigtype][#1]{n#2}{n#3}{Non-#4} - \@newleipzig(#3)#2\@nil}% - \def\@newleipzig(#1)#2#3\@nil{% - \ifleipzig@donotindex - \uppercase{\expandafter\gdef\csname #2}#3\endcsname{\leipzigfont{#1}} +{\relax}% +\@ifpackageloaded{glossary-tree}{% + \@ifpackageloaded{glossary-mcols}{% + \newglossarystyle{leipzigmcolalttree}{% + \setglossarystyle{leipzigalttree}% + \renewenvironment{theglossary}% + {% + \begin{multicols}{\glsmcols}% + \raggedcolumns + \def\@gls@prevlevel{-1}% + \mbox{}\par + \vspace{-\baselineskip}% + }% + {\par + \end{multicols}}% + }% + \newglossarystyle{mcolblock}{% + \setglossarystyle{leipzigmcolalttree}% + }% + }% + {\relax}% +}% +{\relax}% +\@ifpackageloaded{glossary-inline}{% if glossary-inline loaded + \providecommand{\renewglossarystyle}[2]{% + \ifcsundef{@glsstyle@#1}% + {% + \PackageError{glossaries}{Glossary style `#1' isn't already defined}{}% + }% + {% + \csdef{@glsstyle@#1}{#2}% + }% + } + \@ifpackagelater{glossaries}{2012/05/22}{% + \renewglossarystyle{inline}{% + \renewenvironment{theglossary}% + {% + \def\gls@inlinesep{}% + \def\gls@inlinesubsep{}% + \def\gls@inlinepostchild{}% + }% + {\glspostinline}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand{\glossentry}[2]{% + \glsinlinedopostchild + \gls@inlinesep + \glsentryitem{##1}% + \glsinlinenameformat{##1}{% + \glossentryname{##1}% + }% + \ifglsdescsuppressed{##1}% + {% + \glsinlineemptydescformat + {% + \glossentrysymbol{##1}% + }% + {% + ##2% + }% + }% + {% + \ifglshasdesc{##1}% + {\glsinlinedescformat{\leipzig@glossentrydesc{##1}}{\glossentrysymbol{##1}}{##2}}% + {\glsinlineemptydescformat{\glossentrysymbol{##1}}{##2}}% + }% + \ifglshaschildren{##1}% + {% + \glsresetsubentrycounter + \glsinlineparentchildseparator + \def\gls@inlinesubsep{}% + \def\gls@inlinepostchild{\glsinlinepostchild}% + }% + {}% + \def\gls@inlinesep{\glsinlineseparator}% + }% + \renewcommand{\subglossentry}[3]{% + \gls@inlinesubsep% + \glsinlinesubnameformat{##2}{% + \glossentryname{##2}}% + \glssubentryitem{##2}% + \glsinlinesubdescformat{\leipzig@glossentrydesc{##2}}{\glossentrysymbol{##2}}{##3}% + \def\gls@inlinesubsep{\glsinlinesubseparator}% + }% + \renewcommand*{\glsgroupskip}{}% + \renewcommand*{\glsinlineseparator}{,\space}% original: ;\space + \renewcommand*{\glsinlinesubseparator}{,\space}% + \renewcommand*{\glsinlineparentchildseparator}{:\space}% + \renewcommand*{\glsinlinepostchild}{}% + \renewcommand*{\glspostinline}{.\space}% original: \glspostdescription\space + \renewcommand*{\glsinlinenameformat}[2]{\glstarget{##1}{##2}}% + \renewcommand*{\glsinlinedescformat}[3]{% + \,=\,\linebreak[1]##1}% original: \space#1 + \renewcommand*{\glsinlineemptydescformat}[2]{}% + \renewcommand*{\glsinlinesubnameformat}[2]{% + \glstarget{##1}{##2}}%original: \glstarget{#1}{} + \renewcommand*{\glsinlinesubdescformat}[3]{% + \,=\,\linebreak[1]##1}%original: #1 + \renewcommand*{\glossarysection}[2][\@gls@title]{}% no section header + }% + }% + {% + \renewglossarystyle{inline}{% + \renewenvironment{theglossary}% + {% + \def\gls@inlinesep{}% + \def\gls@inlinesubsep{}% + \def\gls@inlineshortlongsep{% + \glsinlineshortlongseparator}% added this v1.0 + }% + {\glspostinline}% + \renewcommand*{\glossaryheader}{}% + \renewcommand*{\glsgroupheading}[1]{}% + \renewcommand*{\glossaryentryfield}[5]{% + \gls@inlinesep + \glsentryitem{##1}\glstarget{##1}{##2}% + \def\glo@desc{##3}% + \def\@no@post@desc{\nopostdesc}% + \ifx\glo@desc\@no@post@desc + \else + \ifstrempty{##3}{}{\gls@inlineshortlongsep##3}% + \fi + \ifglshaschildren{##1}% + {% + \glsresetsubentrycounter + \glsinlineparentchildseparator + \def\gls@inlinesubsep{}% + }% + {}% + \def\gls@inlinesep{\glsinlineseparator}% + }% + \renewcommand*{\glossarysubentryfield}[6]{% + \gls@inlinesubsep% + \glstarget{##2}{}% + \glssubentryitem{##2}##4% + \def\gls@inlinesubsep{\glsinlinesubseparator}% + }% + \renewcommand*{\glsgroupskip}{}% + \newcommand*{\glsinlineshortlongseparator}{% + \,=\,\linebreak[1]}% added this v1.0 + \renewcommand*{\glsinlineseparator}{,\space}% original: ;\space + \renewcommand*{\glsinlinesubseparator}{,\space}% + \renewcommand*{\glsinlineparentchildseparator}{:\space}% + \renewcommand*{\glspostinline}{.\space}% changed from . + % \renewcommand{\glsnamefont}[1]{\textsc{##1}}% removed v2.0 + \renewcommand*{\glossarysection}[2][\@gls@title]{}% added v1.0 + }% + }% +}{\relax}% +\@ifpackageloaded{glossaries}{% + \newcommand{\newleipzig}[4][]{% + \bgroup + {\newacronym[type=\leipzigtype,#1]{#2}{#3}{#4}}% + \@newleipzig#2\@nil% + }% + \def\@newleipzig#1#2\@nil{% + \ifleipzigdonotindex + \uppercase{\expandafter\gdef\csname #2}#2\endcsname{% + \leipzigfont{\glsentryshort{#1#2}}% + }% + \else + \ifleipzighyper + \uppercase{\expandafter\gdef\csname #1}#2\endcsname{% + \acrshort{#1#2}% + }% \else - \uppercase{\expandafter\gdef\csname #2}#3\endcsname{\gls{#2#3}} + \uppercase{\expandafter\gdef\csname #1}#2\endcsname{% + \acrshort*{#1#2}% + }% \fi - \egroup - }% end if glossaries loaded -\else % if glossaries not loaded + \fi + \egroup + }% +\newcommand{\renewleipzig}[2][]{% + \if@leipzig@defined{#2} + {% + \renew@leipzig{#1}{#2}% + }% + {% + \PackageError{leipzig} + {Abbreviation `#2' undefined} + {No `#2` abbreviation is defined, use \string\newleipzig}% + \@gobbletwo + }% +} +\def\if@leipzig@defined#1{% + \uppercase\expandafter{\expandafter\ifcsname\@car#1\@nil}\@cdr#1\@nil\endcsname + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\def\renew@leipzig#1#2{% + \ifcsname glo@\glsdetoklabel{#2}@name\endcsname + \csundef{glo@\glsdetoklabel{#2}@name} + \fi + \if\relax\detokenize{#2}\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\newleipzig{#2}}{\newleipzig[#1]{#2}}% +}% +}{% \newcommand{\newleipzig}[4][]{\@newleipzig(#3)#2\@nil}% + \newcommand{\renewleipzig}[4][]{% + \if@leipzig@defined{#2} + {% + \@newleipzig(#3)#2\@nil% + }% + {% + \PackageError{leipzig} + {Abbreviation `#2' undefined} + {No `#2` abbreviation is defined, use \string\newleipzig}% + \@gobbletwo + }% + } \def\@newleipzig(#1)#2#3\@nil{% \uppercase{\expandafter\gdef\csname #2}#3\endcsname{\leipzigfont{#1}} }% -\fi -\input{leipzig.tex} -\ifleipzig@donotindex\leipzig@donotindexfalse\fi +} +\@ifpackageloaded{glossaries}{% + \loadglsentries{leipzig.tex}% + }% + {\input{leipzig.tex}}% +%% +%% Copyright (C) 2017 by Natalie Weber +%% +%% 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. +%% +%% End of file `leipzig.sty'. diff --git a/Master/texmf-dist/tex/latex/leipzig/leipzig.tex b/Master/texmf-dist/tex/latex/leipzig/leipzig.tex index 812f1cb1830..ba6a4e8091a 100644 --- a/Master/texmf-dist/tex/latex/leipzig/leipzig.tex +++ b/Master/texmf-dist/tex/latex/leipzig/leipzig.tex @@ -1,94 +1,135 @@ -% Format of examples: % -% -% All leipzig gloss macros are of the form {\Abbrv} -% -% where Abbrv starts with a capital letter, and is equivalent to -% the gloss abbreviations suggested in the Leipzig glossing rules. -% -% That is, \Acc{} will print \textsc{acc}, etc. -% +%% +%% This is file `leipzig.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% leipzig.dtx (with options: `abbrvs') +%% ---------------------------------------------------------------- +%% leipzig --- A package to typeset and index linguistic gloss abbreviations. +%% E-mail: natalie.a.weber@gmail.com +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% ---------------------------------------------------------------- +%% +%% Copyright (C) 2017 by Natalie Weber +%% +%% 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 Natalie Weber. +%% +%% This work consists of the file leipzig.dtx, +%% and the derived files +%% README.md, +%% leipzig.ins, +%% leipzig.tex, +%% leipzig.sty, and +%% leipzig.pdf +%% -\newleipzig{abl}{abl}{ablative} %ablative -\newleipzig{abs}{abs}{absolutive} %absolutive -\newleipzig{acc}{acc}{accusative} %accusative -\newleipzig{adj}{adj}{adjective} %adjective -\newleipzig{adv}{adv}{adverbial} %adverb(ial) -\newleipzig{aarg}{a}{agent} %agent-like argument of canonical transitive verb -\newleipzig{agr}{agr}{agreement} %agreement -\newleipzig{all}{all}{allative} %allative -\newleipzig{antip}{antip}{antipassive} %antipassive -\newleipzig{appl}{appl}{applicative} %applicative -\newleipzig{art}{art}{article} %article -\newleipzig{aux}{aux}{auxiliary} %auxiliary -\newleipzig{ben}{ben}{benefactive} %benefactive -\newleipzig{caus}{caus}{causative} %causative -\newleipzig{clf}{clf}{classifier} %classifier -\newleipzig{com}{com}{comitative} %comitative -\newleipzig{comp}{comp}{complementizer} %complementizer -\newleipzig{compl}{compl}{completive} %completive -\newleipzig{cond}{cond}{conditional} %conditional -\newleipzig{cop}{cop}{copula} %copula -\newleipzig{cvb}{cvb}{converb} %converb -\newleipzig{dat}{dat}{dative} %dative -\newleipzig{decl}{decl}{declarative} %declarative -\newleipzig{def}{def}{definite} %definite -\newleipzig{dem}{dem}{demonstrative} %demonstrative -\newleipzig{det}{det}{determiner} %determiner -\newleipzig{dist}{dist}{distal} %distal -\newleipzig{distr}{distr}{distributive} %distributive -\newleipzig{du}{du}{dual} %dual -\newleipzig{dur}{dur}{durative} %durative -\newleipzig{erg}{erg}{ergative} %ergative -\newleipzig{excl}{excl}{exclusive} %exclusive -\newleipzig{f}{f}{feminine} %feminine -\newleipzig{foc}{foc}{focus} %focus -\newleipzig{fut}{fut}{future} %future -\newleipzig{gen}{gen}{genitive} %genitive -\newleipzig{imp}{imp}{imperative} %imperative -\newleipzig{incl}{incl}{inclusive} %inclusive -\newleipzig{ind}{ind}{indicative} %indicative -\newleipzig{indf}{indf}{indefinite} %indefinite -\newleipzig{inf}{inf}{infinitive} %infinitive -\newleipzig{ins}{ins}{instrumental} %instrumental -\newleipzig{intr}{intr}{intransitive} %intransitive -\newleipzig{impf}{impf}{imperfective} %imperfective -\newleipzig{irr}{irr}{irrealis} %irrealis -\newleipzig{loc}{loc}{locative} %locative -\newleipzig{m}{m}{masculine} %masculine -\newleipzig{n}{n}{neuter} %neuter -\newleipzig{neg}{neg}{negative} %negation, negative -\newleipzig{nmlz}{nmlz}{nominalizer} %nominalizer/nominalization -\newleipzig{nom}{nom}{nominative} %nominative -\newleipzig{obj}{obj}{object} %object -\newleipzig{obl}{obl}{oblique} %oblique + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% This is a simple list of newcommands which create shortcuts for %% +%% standard linguistic glosses (see the Leipzig Glossing rules, %% +%% http://www.eva.mpg.de/lingua/resources/glossing-rules.php %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\makeatletter\ifleipzig@nostandards\leipzigdonotindextrue\fi\makeatother + +\newleipzig{abl}{abl}{ab\-la\-tive} %ablative +\newleipzig{abs}{abs}{ab\-so\-lu\-tive} %absolutive +\newleipzig{acc}{acc}{ac\-cusa\-tive} %accusative +\newleipzig{adj}{adj}{ad\-jec\-tive} %adjective +\newleipzig{adv}{adv}{ad\-ver\-bial} %adverb(ial) +\newleipzig{aarg}{a}{agent} %agent-like argument of +\newleipzig{agr}{agr}{agreement} %agreement +\newleipzig{all}{all}{al\-la\-tive} %allative +\newleipzig{antip}{antip}{anti\-pas\-sive} %antipassive +\newleipzig{appl}{appl}{ap\-plica\-tive} %applicative +\newleipzig{art}{art}{article} %article +\newleipzig{aux}{aux}{aux\-il\-iary} %auxiliary +\newleipzig{ben}{ben}{bene\-fac\-tive} %benefactive +\newleipzig{caus}{caus}{causative} %causative +\newleipzig{clf}{clf}{clas\-si\-fi\-er} %classifier +\newleipzig{com}{com}{comi\-ta\-tive} %comitative +\newleipzig{comp}{comp}{com\-ple\-men\-ti\-zer} %complementizer +\newleipzig{compl}{compl}{com\-ple\-tive} %completive +\newleipzig{cond}{cond}{con\-di\-tion\-al} %conditional +\newleipzig{cop}{cop}{cop\-u\-la} %copula +\newleipzig{cvb}{cvb}{con\-verb} %converb +\newleipzig{dat}{dat}{da\-tive} %dative +\newleipzig{decl}{decl}{declarative} %declarative +\newleipzig{def}{def}{definite} %definite +\newleipzig{dem}{dem}{demonstrative} %demonstrative +\newleipzig{det}{det}{determiner} %determiner +\newleipzig{dist}{dist}{dis\-tal} %distal +\newleipzig{distr}{distr}{dis\-tri\-bu\-tive} %distributive +\newleipzig{du}{du}{dual} %dual +\newleipzig{dur}{dur}{dur\-ative} %durative +\newleipzig{erg}{erg}{erg\-ative} %ergative +\newleipzig{excl}{excl}{ex\-clu\-sive} %exclusive +\newleipzig{f}{f}{feminine} %feminine +\newleipzig{foc}{foc}{focus} %focus +\newleipzig{fut}{fut}{future} %future +\newleipzig{gen}{gen}{gen\-i\-tive} %genitive +\newleipzig{imp}{imp}{imperative} %imperative +\newleipzig{incl}{incl}{inclusive} %inclusive +\newleipzig{ind}{ind}{indicative} %indicative +\newleipzig{indf}{indf}{indefinite} %indefinite +\newleipzig{inf}{inf}{in\-fini\-tive} %infinitive +\newleipzig{ins}{ins}{instrumental} %instrumental +\newleipzig{intr}{intr}{in\-tran\-si\-tive} %intransitive +\newleipzig{ipfv}{ipfv}{im\-per\-fec\-tive} %imperfective +\newleipzig{irr}{irr}{ir\-real\-is} %irrealis +\newleipzig{loc}{loc}{loc\-ative} %locative +\newleipzig{m}{m}{masculine} %masculine +\newleipzig{n}{n}{neuter} %neuter +\newleipzig{neg}{neg}{negative} %negation, negative +\newleipzig{nmlz}{nmlz}{nom\-i\-nal\-iz\-er} %nominalizer/nominalization +\newleipzig{nom}{nom}{nom\-in\-ative} %nominative +\newleipzig{obj}{obj}{object} %object +\newleipzig{obl}{obl}{ob\-lique} %oblique \newleipzig{pass}{pass}{passive} %passive -\newleipzig{parg}{p}{patient} %patient -\newleipzig{pfv}{pfv}{perfective} %perfective -\newleipzig{pl}{pl}{plural} %plural -\newleipzig{poss}{poss}{possessive} %possessive -\newleipzig{pred}{pred}{predicative} %predicative -\newleipzig{prf}{prf}{perfect} %perfect -\newleipzig{prs}{prs}{present} %present -\newleipzig{prog}{prog}{progressive} %progressive -\newleipzig{proh}{proh}{prohibitive} %prohibitive -\newleipzig{prox}{prox}{proximal} %proximal/proximate -\newleipzig{pst}{pst}{past} %past -\newleipzig{ptcp}{ptcp}{participle} %participle -\newleipzig{purp}{purp}{purposive} %purposive -\newleipzig{q}{q}{question particle} %question particle/marker -\newleipzig{quot}{quot}{quotative} %quotative -\newleipzig{recp}{recp}{reciprocal} %reciprocal -\newleipzig{refl}{refl}{reflexive} %reflexive -\newleipzig{rel}{rel}{relative} %relative -\newleipzig{res}{res}{resultative} %resultative -\newleipzig{sbj}{sbj}{subject} %subject -\newleipzig{subj}{subj}{subjunctive} %subjunctive -\newleipzig{sg}{sg}{singular} %singular -\newleipzig{sarg}{s}{argument of intransitive verb} +\newleipzig{parg}{p}{patient} %patient +\newleipzig{pfv}{pfv}{per\-fec\-tive} %perfective +\newleipzig{pl}{pl}{plural} %plural +\newleipzig{poss}{poss}{possessive} %possessive +\newleipzig{pred}{pred}{pred\-i\-ca\-tive} %predicative +\newleipzig{prf}{prf}{perfect} %perfect +\newleipzig{prs}{prs}{present} %present +\newleipzig{prog}{prog}{progressive} %progressive +\newleipzig{proh}{proh}{prohibitive} %prohibitive +\newleipzig{prox}{prox}{prox\-i\-mal} %proximal/proximate +\newleipzig{pst}{pst}{past} %past +\newleipzig{ptcp}{ptcp}{participle} %participle +\newleipzig{purp}{purp}{pur\-po\-sive} %purposive +\newleipzig{q}{q}{question particle} %question particle/marker +\newleipzig{quot}{quot}{quot\-ative} %quotative +\newleipzig{recp}{recp}{recip\-ro\-cal} %reciprocal +\newleipzig{refl}{refl}{reflexive} %reflexive +\newleipzig{rel}{rel}{relative} %relative +\newleipzig{res}{res}{re\-sul\-ta\-tive} %resultative +\newleipzig{sbj}{sbj}{subject} %subject +\newleipzig{subj}{subj}{sub\-junc\-tive} %subjunctive +\newleipzig{sg}{sg}{singular} %singular +\newleipzig{sarg}{s}{argument of intransitive verb} %single argument of intransitive verb -\newleipzig{top}{top}{topic} %topic -\newleipzig{tr}{tr}{transitive} %transitive -\newleipzig{voc}{voc}{vocative} %vocative +\newleipzig{top}{top}{topic} %topic +\newleipzig{tr}{tr}{tran\-si\-tive} %transitive +\newleipzig{voc}{voc}{voc\-ative} %vocative %% Define short versions of person + number: \newleipzig{first}{1}{first person}% @@ -103,4 +144,26 @@ \newcommand{\Spl}{{\Second}{\Pl}}% \newcommand{\Tsg}{{\Third}{\Sg}}% \newcommand{\Tdu}{{\Third}{\Du}}% -\newcommand{\Tpl}{{\Third}{\Pl}}% \ No newline at end of file +\newcommand{\Tpl}{{\Third}{\Pl}}% + +\makeatletter +\@ifpackageloaded{glossaries}{% if glossary-tree loaded + \glsfindwidesttoplevelname[\leipzigtype]% +}{\relax}% +\leipzigdonotindexfalse +\makeatother + +%% +%% Copyright (C) 2017 by Natalie Weber +%% +%% 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. +%% +%% End of file `leipzig.tex'. diff --git a/Master/tlpkg/tlpsrc/collection-humanities.tlpsrc b/Master/tlpkg/tlpsrc/collection-humanities.tlpsrc index 3dc0eae39b7..f4e2e3cb207 100644 --- a/Master/tlpkg/tlpsrc/collection-humanities.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-humanities.tlpsrc @@ -26,7 +26,6 @@ depend juraabbrev depend juramisc depend jurarsp depend ledmac -depend leipzig depend lexikon depend lexref depend ling-macros diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index c6a7cb4bed5..cbeb6d10a85 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -580,6 +580,7 @@ depend lcg depend leading depend leaflet depend leftidx +depend leipzig depend lengthconvert depend lettre depend lettrine -- cgit v1.2.3