\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{semantic-markup}[2020/01/29
  Macros for TEI-like semantic markup]
% Copyright 2020 Andrew A. Cashner, andrewacashner@gmail.com

% This work may be distributed and/or modified under the 
% conditions of the LaTeX Project Public License, either
% version 1.3 of this license or (at your option) any 
% later version.
% The latest version of this license is in 
%    http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions
% of LaTeX version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
% The Current Maintainer of this work is Andrew A. Cashner.
% This work consists of the package file semantic-markup.sty 
% and the documentation file semantic-markup.tex.

% CHANGE LOG
% 2020-01-29 - \musfig uses stackengine now instead of amsmath
% 2018-09-07 - ! and ? removed from autopunct for csquotes
% 2018-05-21 - Use fontspec's definition of `\strong` if it is loaded
%            - Use musicography's definition of `\fl`, `\sh`, `\na` commands if
%              it is loaded
%            - `\wtitle` and `\ptitle` shorthands added 
%            - Customizable commands added for endnotes option
%
% 2016-09-22 - `endnotes' option added
% 2016-09-01 - First version on CTAN

% Option to use csquotes default behavior instead of the 
% US localized punctuation used in this package
\newif\ifdefaultquotes
\defaultquotesfalse 
\DeclareOption{defaultquotes}{\defaultquotestrue}

% Option to convert footnotes to endnotes, include
% Footnote environment
\newif\ifendnotes
\endnotesfalse
\DeclareOption{endnotes}{\endnotestrue}

\ProcessOptions\relax
%**************************

\RequirePackage{xparse}

\RequirePackage{csquotes}
\ifdefaultquotes\else
  % Put end punctuation inside quotation marks 
  % for the specified marks
  \renewcommand{\mktextquote}[6]{#1#2#4#5#3#6}
  \DeclareAutoPunct{.,}
\fi

% NB: fontspec defines its own \strong command, so only define this if fontspec
% not loaded
\@ifpackageloaded{fontspec}{}{%
    \NewDocumentCommand{\strong}{}	
    {\textbf}
}


\NewDocumentCommand{\quoted}{}	
{\textquote}
\NewDocumentCommand{\soCalled}{}
{\textquote}

\NewDocumentCommand{\code}{}	
{\texttt}
\NewDocumentCommand{\term}{}	
{\emph}
\NewDocumentCommand{\mentioned}{}	
{\emph}
\NewDocumentCommand{\foreign}{}
{\emph}

\NewDocumentCommand{\worktitle}{}
{\emph}
\NewDocumentCommand{\parttitle}{}
{\textquote}

% Shorter versions of these frequently used commands
\NewDocumentCommand{\wtitle}{}{\worktitle}
\NewDocumentCommand{\ptitle}{}{\parttitle}

% editorial addition
\NewDocumentCommand{\add}{ m }
{[#1]}
% editorial ellipsis
\NewDocumentCommand{\Dots}{}{\add{\dots}}
% explanatory gloss of technical or foreign term
\NewDocumentCommand{\gloss}{ m m }{%
  \mentioned{#1} (#2)%
}
% explanatory gloss of word in quotation marks
\NewDocumentCommand{\quotedgloss}{ m m }{%
  \quoted{#1} (#2)%
}

%*******************
% Identify problem spot in draft
\NewDocumentCommand{\XXX}{ O{FIX} }{%
    \strong{\add{#1}}%
}
% Indicate citation to be filled in later
% Optional argument for indicating the source
\NewDocumentCommand{\citXXX}{ o }{%
    \footnote{\strong{\add{Citation needed\IfValueTF{#1}{: #1}{}}}}%
}

%*******************
% Footnote as environment
\RequirePackage{environ}
\NewEnviron{Footnote}{\footnote{\BODY}}[]

%******************
% Endnotes, if desired

\ifendnotes
    \RequirePackage{endnotes}

    % Customize these commands with \renewcommand
    \NewDocumentCommand{\DoBeforeEndnotes}{}{\clearpage}
    \NewDocumentCommand{\EndnoteFont}{}{}

    % Optionally remove this (\renewcommand{\MakeEndnotes}{})
    % to avoid conflicts with endnotes or other packages
    \NewDocumentCommand{\SetupEndnotes}{}{%
      \let\footnote=\endnote
      \AtEndDocument{\DoBeforeEndnotes{\EndnoteFont\theendnotes}}%
    }

    \AtBeginDocument{%
        \SetupEndnotes{}%
        % Footnote environment adjusted to fix expansion problem
        \RenewEnviron{Footnote}{\expandafter\footnote\expandafter{\BODY}}[]%
    }%
\fi
%******************

%****************************************
% MUSIC SYMBOLS

% Accidentals using LaTeX symbols
% Use better definitions from musicography if it was loaded first
\@ifpackageloaded{musicography}{}{%
    \NewDocumentCommand{\fl}{}{$\flat$}
    \NewDocumentCommand{\na}{}{$\natural$}
    \NewDocumentCommand{\sh}{}{$\sharp$}
}

% Octave subscripts 
\NewDocumentCommand{\octave}{ }{\textsubscript}

% Music figures
\RequirePackage{stackengine}
\setstackgap{S}{2pt}
\NewDocumentCommand{\musfig}{ m m }{%
    \Shortstack{#1 #2}%
}

% Meter signatures
\NewDocumentCommand{\meter}{}{\musfig}

\endinput
