0% found this document useful (0 votes)
34 views

The Semantic-Markup Package For Meaningful Markup: Andrew A. Cashner January 29, 2020

Uploaded by

fu shrd
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views

The Semantic-Markup Package For Meaningful Markup: Andrew A. Cashner January 29, 2020

Uploaded by

fu shrd
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

The semantic-markup Package for Meaningful

Markup
Andrew A. Cashner∗
January 29, 2020

The semantic-markup package provides a set of simple commands to al-


low for semantic markup. The commands are inspired by the XML elements
of the Text Encoding Initiative (http://www.tei-c.org). They are intended
especially for scholarly writing in the humanities, including about music. The
goal is simply to allow scholars to write with attention to meaning and content
rather than to formatting.

Contents
1 Package Options 1
1.1 defaultquotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 endnotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Semantic Commands Defined Without Arguments 2

3 Semantic Commands With Arguments 3

4 Footnote Environment 4

5 Musical Symbols 4

6 Code 5

1 Package Options
1.1 defaultquotes
The package configures csquotes to place end punctuation inside quotation
marks, according to United States usage. Use the defaultquotes package op-
tion to restore the default behavior of csquotes.
[email protected]

1
1.2 endnotes
The endnotes option converts footnotes to endnotes, including footnotes created
with this package’s Footnote environment. On its own, this option loads the
endnotes package and does everything necessary for endnotes. You can define
the following commands to adjust the behavior:

Command Default value


\DoBeforeEndnotes \clearpage
\EndnoteFont Empty (normal font)

If you want to setup the endnotes in a completely different way or avoid con-
flicts with another package, you can do \renewcommand{\SetupEndnotes}{} to
eliminate all of this or you can renew the command to do something else.

2 Semantic Commands Defined Without Argu-


ments
The following commands are defined (using xparse) as aliases to standard LATEX
commands or \textquote from the csquotes package. In other words, they are
not defined with an argument. For example, the command for a technical term,
typically set in italics is defined this way:
\NewDocumentCommand{\term}{}{\emph}
To redefine it to be set in bold, for example, you can use the basic LATEX
command \renewcommand{\term}{\textbf}.
The \strong command is already defined in the fontspec package; if that
package is loaded, this package will not redefine its command.

2
Package Command Alias Use
\quoted \textquote Quoted material, taking care of end
punctuation: instead of “word,” write
\quoted {word},
\soCalled \textquote Scare quotes
\strong \textbf Highlight emphasis just as in HTML
\code \texttt Computer code in teletype font (not ver-
batim)
\term \emph Technical terms, set in italics
\mentioned \emph Referring to a word as a word rather
than to its meaning, as in philological
discussion
\foreign \emph Foreign term
\worktitle \emph Title of a complete work (of literature,
art, music), set in italics; use for books,
journal titles
\parttitle \textquote Title of a portion of a work, set in quo-
tation marks, such as a journal article,
song on an album

3 Semantic Commands With Arguments


These commands have slightly more complex definitions, but can still be easily
redefined. See the xparse documentation on the syntax of these commands.

Command Definition Usage


\add One argument: Put square For editorial additions
brackets around argument
\Dots Put ellipsis in square brack- For editorial omissions from
ets quotations
\gloss Two arguments: Put first in Use a technical or foreign
italics and second in paren- term and give its definition
theses
\quotedgloss Two arguments: Put first in Same as \gloss but using
quotation marks and second \quoted for the first argu-
in parentheses ment instead of \mentioned
\XXX One optional argument with Identify problem spot in
default value of \add {FIX} draft
\citXXX One optional argument Make footnote indicating a
missing citation; optional ar-
gument may be used for re-
minder of the citation name
or description

3
4 Footnote Environment
When writing many long footnotes it can be useful to have an environment
for footnotes. Here one is defined using the environ package. You still have to
escape the end of the line before the footnote begins. Use like so:
Body text.%
\begin{Footnote}
Footnote text.
More footnote text.
\end{Footnote}
Continuation of body text.

5 Musical Symbols
Shorthands are defined for musical accidentals, using LATEX math-mode sym-
bols. These could be redefined to use Unicode symbols if the font contains them,
or with commands from the lilyglyphs package. Remember that like all com-
mands without arguments, LATEX will ignore the space after the command-name,
so you will need to write \fl{} or \fl\ . There is also a command for octave
numbers, for the system in which middle C begins the fourth octave.
If the musicography package is loaded, it will redefine the commands \fl,
\sh, and \na to use nicer symbols from the MusiXTEX fonts.

Command Alias
\fl $\flat$
\na $\natural$
\sh $\sharp$
\octave \textsubscript

For stacked numerals, as in meter signatures or figured bass, we provide two


simple options, \musfig using \Shortstack from stackengine, and \meter,
which is an alias for the same thing. Both commands take two arguments, one
for the top numeral and the second for the bottom numeral. You could write,
for example:
There is a \musfig{6--5}{4--3} cadential pattern
before the shift to \meter{3}{4} time.
The melody begins on F\sh\octave{4}.

6–5 3
There is a 4–3 cadential pattern before the shift to 4 time. The melody begins
on F]4 .
For more complex notation, such as three-level numerals, or stacked figured-
bass symbols with accidentals or slashes, you will have to devise your own so-
lution.

4
6 Code
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{semantic-markup}[2020/01/29
Macros for TEI-like semantic markup]
% Copyright 2020 Andrew A. Cashner, [email protected]

% 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

5
%**************************

\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]}

6
% 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{}%

7
% 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

You might also like