summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/metrix
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/metrix
Initial commit
Diffstat (limited to 'macros/latex/contrib/metrix')
-rw-r--r--macros/latex/contrib/metrix/README58
-rw-r--r--macros/latex/contrib/metrix/metrix.dtx2548
-rw-r--r--macros/latex/contrib/metrix/metrix.ins35
-rw-r--r--macros/latex/contrib/metrix/metrix.pdfbin0 -> 639645 bytes
4 files changed, 2641 insertions, 0 deletions
diff --git a/macros/latex/contrib/metrix/README b/macros/latex/contrib/metrix/README
new file mode 100644
index 0000000000..f9d357d7dd
--- /dev/null
+++ b/macros/latex/contrib/metrix/README
@@ -0,0 +1,58 @@
+
+
+ M E T R I X
+
+
+ Tobias Weh
+ mail@tobiw.de
+ http://tobiw.de/en
+ github.com/tweh/metrix
+
+ _ _ _ _ _ _ u u _ u u _
+ et quod temptabam scribere versus erat
+
+
+The metrix package can be used to print the prosodics/metrics
+of (latin) verses. It provides macros to typeset the symbols
+stand alone and in combination with syllables (including
+automatic alignment like seen above). Furthermore it defines a
+new brevis and a longa accent and a bow to contract syllables.
+
+
+# License
+License:
+This material is subject to the LaTeX Project Public License
+(LPPL), either version 1.3c of this license or (at your
+option) any later version. The latest version of this
+license is in the file
+
+ http://www.latex-project.org/lppl.txt
+
+
+# Files
+
+- README : this file
+- metrix.dtx : source file
+- metrix.ins : install file
+- metrix.pdf : documentation
+
+
+# Installation
+It’s recommended to use your package manager to install the
+current version from CTAN. To install this package manually
+download alls files and then navigate to the folder that
+contains metrix.ins.
+Run
+
+ latex metrix.ins
+
+to get the file metrix.sty which should be moved somewhere
+TeX can find it (e.g. $TEXMFHOME/tex/latex/metrix/metrix.sty)
+
+To typeset the manual run
+
+ pdflatex metrix.dtx
+ makeindex -s gglo.ist -o metrix.gls metrix.glo
+ makeindex -s gind.ist -o metrix.ind metrix.idx
+ pdflatex metrix.dtx
+ pdflatex metrix.dtx
diff --git a/macros/latex/contrib/metrix/metrix.dtx b/macros/latex/contrib/metrix/metrix.dtx
new file mode 100644
index 0000000000..421fc5ab77
--- /dev/null
+++ b/macros/latex/contrib/metrix/metrix.dtx
@@ -0,0 +1,2548 @@
+% \iffalse meta-comment
+%
+%% File: metrix.dtx Copyright (c) Tobias Weh
+%%
+%% This file may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3c of this
+%% license or (at your option) any later version. The latest version
+%% of this license is in the file
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%<*driver|package>
+% The version of expl3 required is tested as early as possible, as
+% some really old versions do not define \ProvidesExplPackage.
+\RequirePackage{expl3}[2016/01/03]
+%<package>\@ifpackagelater{expl3}{2016/01/03}
+%<package> {}
+%<package> {%
+%<package> \PackageError{metrix}{Support package l3kernel too old}
+%<package> {%
+%<package> Please install an up to date version of l3kernel\MessageBreak
+%<package> using your TeX package manager or from CTAN.\MessageBreak
+%<package> \MessageBreak
+%<package> Loading xparse will abort!%
+%<package> }%
+%<package> \endinput
+%<package> }
+\def\metrixFileName{metrix}
+\def\metrixFileDescription{Typset prosody/metric symbols.}
+\def\metrixFileDate{2019/05/13}
+\def\metrixFileVersion{1.4a}
+%</driver|package>
+%<*driver>
+\documentclass[full,english]{l3doc}
+
+\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+
+\usepackage{etoolbox}
+
+\usepackage{babel}
+
+\usepackage{xparse}
+\usepackage{xcolor}
+ \definecolor{twred}{HTML}{91031F}
+
+\hypersetup{
+ allcolors=twred,
+}
+
+\usepackage{metrix}
+
+\usepackage{longtable,tabu,booktabs}
+\renewcommand{\arraystretch}{1.3}
+\usepackage[bottom]{footmisc}
+
+\usepackage{mdframed}
+ \newmdenv[
+ backgroundcolor=black!15,
+ linecolor=twred,
+ linewidth=1.25pt,
+ topline=false,
+ rightline=false,
+ bottomline=false,
+ frametitlefont=\sffamily\bfseries,
+ frametitle=Example,
+ ]{example}
+
+\usepackage{microtype}
+\usepackage{tgpagella}
+\usepackage[scale=0.875]{tgheros}
+\usepackage{ascii}
+
+\usepackage{upquote}
+ % add \@noligs to the redefinitions made by doc.sty to make upquote work
+ \makeatother
+ \patchcmd{\verb}{\ttfamily}{\ttfamily\@noligs}{}{}
+ \patchcmd{\verbatim}{\frenchspacing}{\frenchspacing\@noligs}{}{}
+ \patchcmd{\macrocode}{\frenchspacing}{\frenchspacing\@noligs}{}{}
+ \makeatother
+
+\edef\pluschar{+}
+
+\AtBeginDocument{
+ \DeleteShortVerb{\|}
+ \DeleteShortVerb{\"}
+ \MakeShortVerb{\+}
+}
+
+\makeatletter
+\def\meta@font@select{\itshape\rmfamily}
+\makeatother
+
+\IndexPrologue{
+ \section*{Index}
+ \addcontentsline{toc}{section}{Index}
+ The italic numbers denote the pages where the
+ corresponding entry is described,
+ numbers underlined point to the definition,
+ all others indicate the places where it is used.
+}
+\GlossaryPrologue{
+ \section{Change History}
+ {\GlossaryParms\ttfamily\hyphenchar\font=`\-}
+}
+\AtBeginDocument{\renewcommand*{\glossaryname}{Change History}}
+
+\def\metrix/{\textcolor{twred}{\textbf{\textsf{m\u{e}trix}}}}
+\def\TikZ/{Ti\emph{k}Z}
+\newrobustcmd{\Star}{\meta{\textup{\texttt{*}}}}
+\newrobustcmd{\mail}[1]{\href{mailto:#1}{#1}}
+
+
+\begin{document}
+ \DocInput{\metrixFileName.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%
+% \title{The \metrix/ package}
+%
+% \author{Tobias Weh\thanks{URL: \url{http://tobiw.de/en}, Mail: \mail{mail@tobiw.de}}}
+% \changes{v1.1a}{2015/07/23}{New contact info (mail and URL).}
+%
+% \date{Version \metrixFileVersion\ -- Released \metrixFileDate}
+%
+% \maketitle
+%
+% \begin{documentation}\MakePrivateLetters
+%
+% \begin{abstract}
+% \mbox{}\par
+% \begin{center}
+% \Large
+% \metrics{_ _ _ _ _ | _ u u _ u u _ }
+% {\acct{e}t qu\acct{o}d temp-t\acct{a}-bam | scr\acct{i}-be-re v\acct{e}r-sus \acct{e}-rat}
+% \end{center}
+% \par\bigskip
+% The \metrix/ package can be used to print the prosodics/metrics of (latin) verses.
+% It provides macros to typeset the symbols stand alone and in combination with syllables
+% (including automatic alignment like seen above). Furthermore it defines a new br\brv{e}vis
+% and a l\lng{o}nga accent^^A
+% \footnote{I know that these signs are no accents in the liguistic sense, but
+% they are in the \TeX\ tradition \dots}
+% and \bow{a b}ow to contract syllables.
+%
+% \medskip
+% \emph{Thanks to David Carlisle, Marco Daniel, Enrico Gregorio, Bruno Le Floch and
+% Joseph Wright who helped me with starting in \LaTeX3 programming. The verse above
+% is by Ovid in his Tristia~4,10,26.}
+% \end{abstract}
+%
+% \section{Prerequisites}
+% \metrix/ relies only on a few packages: \pkg{tikz} (including the +calc+ library), \pkg{xpatch}
+% and \pkg{xparse}, which stand for the whole \LaTeX3 bundle.
+%
+% \section{Package loading}
+% Load \metrix/ as usual with +\usepackage{metrix}+. At the moment it has no options.
+%
+% \changes{v1.0a}{2013/08/14}{Added \texttt{cwl} file for TeXstudio}
+% A CWL file +metrix.cwl+ for autocompletition in TeXstudio is available in the
+% GitHub repo. To install the CWL file copy it to +~/.config/texstudio/+
+% on Linux and OS X and to +C:\Documents and Settings/User/AppData/Roaming/texstudio/+.
+% See section 1.5 of the TeXstudio manual for more information.
+%
+%
+% \section{Bugs and feedback}
+% \subsection{Known issues}
+% \begin{itemize}
+% \item At the moment the escaping of hyphen chars is not that good (see section~\ref{faq:hyphen}).
+% \item Unfortunatly you can't use the active quotes of \pkg{csquotes} inside of
+% \cs{metrics} syllable list (see section~\ref{faq:quotes}).
+% \end{itemize}
+% I'm sure there are more bugs and issues let me know if you find them \dots
+% \subsection{Feedback}
+% Any feedback on \metrix/ is appreciated. You may use its GitHub repository at
+% \url{https://github.com/tweh/metrix} to request features and report bugs or
+% send me an e-mail (\mail{mail@tobiw.de}).
+%
+% Please note that I don't speak latin myself and forthat the examples in this manual
+% may be wrong---as long as they show how to use the package I don't consider such
+% errors as bugs +;-)+.
+%
+% \section{Metric symbols}
+% \subsection{Syntax for symbols}\label{sec:syntax}
+% \changes{v1.1}{2014/07/02}{New section about the symbol syntax (see \ref{sec:syntax})}
+% Before I'll show you the central macros for typesetting the symbols, you need
+% to ``learn'' the syntax for the symbols. All symbols are represented by a single
+% or a combination of characters. The list with all available abbreviations can
+% be found in table~\ref{tab:symbols}. Please keep in mind that \metrix/ uses spaces to
+% separate the abbreviations an something like +_'x+ will cause an error, the
+% correct input is \verb*|_ ' x| (where \verb*| | indicates a space/blank).
+% \subsubsection*{Accents above symbols (ictus)}
+% If you want to add an additional accent above a symbol you may precede the symbol with
+% an slash +/+ for an acute or a star +*+ for a grave accent. At the moment this only works
+% with breve (+/u+ or +*u+) and longum (+/_+ or +*_+).
+% \begin{example}
+% An ictus (although out of date).
+% \begin{verbatim}
+% \metricsymbols{/_ u u /_ _ /_}
+% \end{verbatim}
+% \metricsymbols{/_ u u /_ _ /_}
+% \end{example}
+%\pagebreak
+% \begin{longtabu}to \textwidth {l>{\itshape}lcXl}
+% \caption{Symbol abbreviations\label{tab:symbols}}\\
+% \toprule
+% \rowfont{\bfseries\sffamily} \multicolumn{2}{l}{abbreviation} & symbol & name/explantion & accent/ictus? \\
+% \midrule
+% \endfirsthead
+% \caption{Symbol abbreviations (cont.)}\\
+% \toprule
+% \rowfont{\bfseries\sffamily} \multicolumn{2}{l}{abbreviation} & symbol & name/explantion & accent/ictus? \\
+% \midrule
+% \endhead
+% \multicolumn{5}{r}{\dots}
+% \endfoot
+% \bottomrule
+% \endlastfoot
+% +e+ && \metricsymbols{e} & empty (=\,invisible) symbol & \\
+% +u+ && \metricsymbols{u} & elementum breve & yes \\
+% +_+ & underscore & \metricsymbols{_} & elementum longum & yes \\
+% +uu+ && \metricsymbols{uu} & double breve & \\
+% +uu_+ && \metricsymbols{uu_} & elementum biceps & \\
+% +_uu+ && \metricsymbols{_uu} & elementum biceps & \\
+% +u_uu+ && \metricsymbols{u_uu} & elementum anceps & \\
+% +x+ && \metricsymbols{x} & elementum anceps & \\
+% +n+ && \metricsymbols{n} & elementum indifferens & \\
+% +u_+ && \metricsymbols{u_} & elementum indifferens & \\
+% +A+ && \metricsymbols{A} & * & \\
+% +v+ && \metricsymbols{v} & * & \\
+% +o+ && \metricsymbols{o} & * & \\
+% +oo+ && \metricsymbols{oo} & aeolic base & \\
+% +l+ && \metricsymbols{l} & * & \\
+% +ll+ && \metricsymbols{ll} & * & \\
+% +p+ && \metricsymbols{p} & primary stress & \\
+% +s+ && \metricsymbols{s} & secondary stress & \\
+% +|+ & pipe & \metricsymbols{|} & break (see \ref{sec:breaks}) & \\
+% +||+ & two pipes & \metricsymbols{||} & verse break (see \ref{sec:breaks}) & \\
+% +'+ & apostrophe (shift\,\pluschar\,\#) & \metricsymbols{'} &
+% shorter break (see \ref{sec:breaks}) & \\
+% +,+ & comma & \metricsymbols{,} & shorter break (see \ref{sec:breaks}) & \\
+% \end{longtabu}
+% \par
+% {\vspace{-0.5\baselineskip}\itshape\footnotesize\noindent
+% * I added these symbols as someone might needs them. If you use them please let me
+% know what to add as name/explanation.\par}
+% \subsection{Stand alone metric symbols}
+% \begin{function}[EXP]{\metricsymbols}
+% \begin{syntax}
+% \cs{metricsymbols}\Star\oarg{highlighting}\Arg{symbols}
+% \end{syntax}
+% This macro typesets stand alone versions of the symbols, i.e. without
+% syllables below (or above) of them. Use the starred version for smaller (in line) symbols
+% and the normal version for bigger symbols. \meta{symbols} must be a list of
+% abbreviations as explained in section~\ref{sec:syntax}; the abbreviations must be
+% separated by one (or more) spaces.
+% \end{function}
+% \begin{example}
+% The \emph{diphilius} can be shown with this code.
+% \begin{verbatim}
+% \metricsymbols{_ _uu _ _uu u_ | x _ u u _ x u_}
+% \end{verbatim}
+% \metricsymbols{_ _uu _ _uu u_ | x _ u u _ x u_}
+% \end{example}
+% \subsection{Metric symbols above (or below) syllables}
+% \begin{function}[EXP]{\metrics}
+% \begin{syntax}
+% \cs{metrics}\oarg{highlighting}\Arg{symbols}\Arg{syllables}
+% \end{syntax}
+% This command can be used to align the symbols above (or below)
+% syllables. The first argument works as in \cs{metricsymbols},
+% the second argument \meta{syllables} takes the hyphenated verse.
+% \end{function}
+% \begin{example}
+% \begin{verbatim}
+% \metrics{_ u u _ _ _ | _ _ u u _ _ _ }
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob-iec-tust}
+% \end{verbatim}
+% \metrics{_ u u _ _ _ | _ _ u u _ _ _ }
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob-iec-tust}
+% \end{example}
+%
+% \medskip\noindent
+% You may use multiple spaces to align the abbreviations above the syllables but this is not mandatory and
+% does not affect the output. But mind that the number of syllables equals the number of symbols. If you
+% use the \metricsymbols*{oo} symbol you may omit the hyphen between the two syllables beloning to this
+% symbol. You can merge multiple words by \emph{embracing} them.
+% \begin{example}
+% \begin{verbatim}
+% \metrics{_ u u _ _ _ _ _ }
+% {mol-ta quo-{que et} bel-lo pas-sus}
+% \end{verbatim}
+% \metrics{_ u u _ _ _ _ _ }
+% {mol-ta quo-{que et} bel-lo pas-sus}
+% \end{example}
+%
+% The macros \cs{metrics} and \cs{metricsymbols} can also be used to typeset
+% single symbols or symbol syllable combinations.
+% \begin{example}
+% \begin{verbatim}
+% The \metricsymbols*{_uu} shows an \emph{elementum biceps}.
+% \end{verbatim}
+% The \metricsymbols*{_uu} shows an \emph{elementum biceps}.
+% \end{example}
+%
+% \subsection{Adding symbols for breaks}\label{sec:breaks}
+% \changes{v1.1}{2014/07/02}{New section about breaks (see \ref{sec:breaks})}
+% As seen in the examples above you can use pipes, i.e. +|+ or +||+, to mark breaks.
+% In \cs{metrics} the markers must appear in \meta{symbols} and \meta{syllables}.
+% \begin{example}
+% \begin{verbatim}
+% \metrics{_ u u _ _ _ | _ _ u u _ ||}
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob ||}
+% \end{verbatim}
+% \metrics{_ u u _ _ _ | _ _ u u _ ||}
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob ||}
+% \end{example}
+% If you want the breaks to be shown in the symbol line only you can use the
+% shorter break which is represented by an apostrophe (shift\,\pluschar\,\#)
+% or a comma. This mark must be used in \meta{symbols} only and is kind of special:
+% \begin{itemize}
+% \item It \emph{can't} be highlighted and thus doesn't count for the numbers used
+% for highlights,
+% \item it is ignored at the beginning and the end of \meta{symbols},
+% \item in \cs{metricsymbols} it is treated like the pipe, and
+% \item \TeX\ needs at least one additional run to get the right positions.
+% \end{itemize}
+% \begin{example}
+% \begin{verbatim}
+% \metrics{_ u u ' _ u u ' _ _ ' _ _ | _ u u | _ _ ||}
+% {Ar-ma vi-rum-que ca-no Tro-iae qui | pri-mus ab | o-ris ||}
+% \end{verbatim}
+% \metrics{_ u u ' _ u u ' _ _ ' _ _ | _ u u | _ _ ||}
+% {Ar-ma vi-rum-que ca-no Tro-iae qui | pri-mus ab | o-ris ||}
+% \end{example}
+% The difference between +'+ and +,+ is that the break defined with an apostrophe
+% is vertically centred between the surrounding symbols while the break set with
+% the comma is vertically centred between the corresponding syllables. They both
+% align horizontally within the row of symbols.
+% \begin{example}
+% \begin{verbatim}
+% \emph{apostrophe:}
+% \metrics{_ _ ' _ }
+% {au-ra-{r\bow{um e}st}} \qquad
+% \emph{comma:}
+% \metrics{_ _ , _ }
+% {au-ra-{r\bow{um e}st}}
+% \end{verbatim}
+% \emph{apostrophe:}
+% \metrics{_ _ ' _ }
+% {au-ra-{r\bow{um e}st}} \qquad
+% \emph{comma:}
+% \metrics{_ _ , _ }
+% {au-ra-{r\bow{um e}st}}
+% \end{example}
+%
+% \subsection{Highlight certain symbols/syllabels}
+% As you can see above \cs{metrics} and \cs{metricsymbols} got an optional argument taking
+% some options to highlight a certain symbol/syllable. The \meta{highlighting} list must
+% contain one or more comma separated pairs of \meta{numbers}+=+\meta{style}, where \meta{numbers}
+% is the number of a symbol/syllable (e.g. +3+) or a list of numbers separated by plus signs
+% (e.g. \verb.2+3+5.) in the list and \meta{style} is any \TikZ/ style (other \TikZ/ options may not
+% work properly, so you maybe must create your own style, see section~\ref{faq:highlight}.)
+%
+% \medskip\noindent
+% \metrix/ comes with several predefined highlighting styles:
+% \DeleteShortVerb{\+}
+% \begin{itemize}
+% \item \textbf{\texttt{add arrow}}\\[2ex]
+% \metrics[3+8={add arrow}]{_ u u _ _ _ | _ _ u u _ ||}
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob ||}\hfill
+% \metricsymbols[2={add arrow}]{u u_uu x _ | u _ n ||}
+%
+% This style adds an arrow above the metric symbol. To change the arrow symbol, edit
+% the \metrix/ variable \verb+arrow+.
+%
+% \item \textbf{\texttt{add text}=}\meta{text}\\[2ex]
+% \metrics[3+8={add text=shout!}]{_ u u _ _ _ | _ _ u u _ ||}
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob ||}\hfill
+% \metricsymbols[2={add text=whisper}]{u u_uu x _ | u _ n ||}
+%
+% This style takes a \emph{mandatory} argument to add some text above a symbol.
+% To change the default font change the font of the \TikZ/ node style
+% \verb|every metrix added text|.
+%
+% \item \textbf{\texttt{bold highlight}}\\[2ex]
+% \metrics[2+5+9+13={bold highlight}]{_ u u _ _ _ | _ _ u u _ ||}
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob ||}\hfill
+% \metricsymbols[2+3+5+7={bold highlight}]{u u_uu x _ | u _ n ||}
+%
+% \item \textbf{\texttt{colored highlight=}\meta{color}}\\[2ex]
+% \metrics[2+5+9+13={colored highlight}]{_ u u _ _ _ | _ _ u u _ ||}
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob ||}\hfill
+% \metricsymbols[2+3+5+7={colored highlight}]{u u_uu x _ | u _ n ||}
+%
+% This style has an \emph{optional} argument to change the highlighting color on the fly.
+% To change the color in general change the value of the variable \verb.highlightcolor..
+%
+% \item \textbf{\texttt{dashed highlight}}\\[2ex]
+% \metrics[2+5+9+13={dashed highlight}]{_ u u _ _ _ | _ _ u u _ ||}
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob ||}\hfill
+% \metricsymbols[2+3+5+7={dashed highlight}]{u u_uu x _ | u _ n ||}
+%
+% \item \textbf{\texttt{filled highlight=}\meta{color}}\\[2ex]
+% \metrics[2+5+9+13={filled highlight}]{_ u u _ _ _ | _ _ u u _ ||}
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob ||}\hfill
+% \metricsymbols[2+3+5+7={filled highlight}]{u u_uu x _ | u _ n ||}
+%
+% This style has an \emph{optional} argument to change the filling color on the fly.
+% To change the color in general change the value of the variable \verb.fillcolor..
+%
+% \item \textbf{\texttt{superscript=}\meta{text}}\\[2ex]
+% \metrics[7={superscript=a},13={superscript=b}]{_ u u _ _ _ | _ _ u u _ ||}
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob ||}\hfill
+% \metricsymbols[5={superscript=a},9={superscript=b}]{u u_uu x _ | u _ n ||}
+%
+% This style takes a \emph{mandatory} argument to add a superscript letter or a
+% number to a symbol. It is designed to work with the break symbols, but works with others too.
+% \end{itemize}
+% \MakeShortVerb{\+}
+%
+% \medskip\noindent
+% \textbf{Sytles with an agrument must be set in braces} (see the examples)\textbf{!}
+% \begin{example}
+% Higlight some syllables with color.
+% \begin{verbatim}
+% \metrics
+% [
+% 2=colored highlight,
+% 4={colored highlight=orange},
+% 5={colored highlight=blue},
+% 7=colored highlight,
+% 11=colored highlight
+% ]
+% {_ u u _ _ _ | _ _ u u _ }
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob}
+% \end{verbatim}
+% \metrics
+% [
+% 2=colored highlight,
+% 4={colored highlight=orange},
+% 5={colored highlight=blue},
+% 7=colored highlight,
+% 11=colored highlight
+% ]
+% {_ u u _ _ _ | _ _ u u _ }
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob}
+% \end{example}
+% \begin{example}
+% The shorter version using the \verb.+. syntax.
+% \begin{verbatim}
+% \metrics[2+5+9=bold highlight]
+% {_ u u _ _ _ | _ _ u u _ }
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob}
+% \end{verbatim}
+% \DeleteShortVerb{\+}
+% \metrics[2+5+9=bold highlight]
+% {_ u u _ _ _ | _ _ u u _ }
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob}
+% \end{example}
+% \begin{example}
+% Mixing and combining styles is possible too.
+% \begin{verbatim}
+% \metricsymbols[1+4=bold highlight, 3=colored highlight]
+% {u_uu x _ || u _ n ||} \\
+% \metricsymbols[2={bold highlight,colored highlight}]
+% {u_uu x _ || u _ n ||}
+% \end{verbatim}
+% \DeleteShortVerb{\+}
+% \metricsymbols[1+4=bold highlight, 3=colored highlight]
+% {u_uu x _ || u _ n ||}\\
+% \metricsymbols[2={bold highlight,colored highlight}]
+% {u_uu x _ || u _ n ||}
+% \MakeShortVerb{\+}
+% \end{example}
+% \begin{example}
+% Add some superscripts to the breaks.
+% \begin{verbatim}
+% \metricsymbols[6={superscript=5},10={colored highlight,superscript=bD}]
+% {_ _uu _ _uu _ | _uu _ _uu || _ uu _ u_}
+% \end{verbatim}
+% \metricsymbols[6={superscript=5},10={colored highlight,superscript=bD}]
+% {_ _uu _ _uu _ | _uu _ _uu || _ uu _ u_}
+% \end{example}
+%
+% \section{Accents and bows}
+% \begin{function}[EXP]{\brv,\lng,\acct}
+% \begin{syntax}
+% \cs{brv}\Arg{vowel}\qquad\cs{lng}\Arg{vowel}\qquad\cs{acct}\Arg{vowel}
+% \end{syntax}
+% The first commands offer an alternative to the standard accent macros +\u+ and +\=+. The difference
+% is that \cs{brv} centers the accent above the vowel or diphthong and \cs{lng} stretches the bar across
+% the whole vowel or diphthong. \cs{acct} adds an accent dot below a vowel or dipthtong.\footnotemark
+% \end{function}
+% \footnotetext{Actually you can use any vowel, diphtong, syllable or word as \meta{vowel},
+% it makes no difference as long as it is text.}
+% \begin{example}
+% Add accents to all vowels.
+% \begin{verbatim}
+% \brv{a}m\acct{\lng{i}}c\brv{u}s pr\acct{\brv{o}}f\brv{u}g\brv{u}s
+% \end{verbatim}
+% \brv{a}m\acct{\lng{i}}c\brv{u}s pr\acct{\brv{o}}f\brv{u}g\brv{u}s
+% \end{example}
+%
+% \metrix/ also tries to do some kind of italic correction, and shifts the accents a little to the
+% right when an italic or slanted font is used.
+% \par\large\medskip
+% \brv{u}\enskip\textit{\brv{u}}\enskip\textsl{\brv{u}}\qquad
+% \brv{i}\enskip\textit{\brv{i}}\enskip\textsl{\brv{i}}\qquad
+% \brv{ae}\enskip\textit{\brv{ae}}\enskip\textsl{\brv{ae}}\hfill
+% {\sffamily
+% \brv{u}\enskip\textit{\brv{u}}\enskip\textsl{\brv{u}}\qquad
+% \brv{i}\enskip\textit{\brv{i}}\enskip\textsl{\brv{i}}\qquad
+% \brv{ae}\enskip\textit{\brv{ae}}\enskip\textsl{\brv{ae}}\hfill\mbox{}}
+% \par\medskip
+% \lng{u}\enskip\textit{\lng{u}}\enskip\textsl{\lng{u}}\qquad
+% \lng{i}\enskip\textit{\lng{i}}\enskip\textsl{\lng{i}}\qquad
+% \lng{ae}\enskip\textit{\lng{ae}}\enskip\textsl{\lng{ae}}\hfill
+% {\sffamily
+% \lng{u}\enskip\textit{\lng{u}}\enskip\textsl{\lng{u}}\qquad
+% \lng{i}\enskip\textit{\lng{i}}\enskip\textsl{\lng{i}}\qquad
+% \lng{ae}\enskip\textit{\lng{ae}}\enskip\textsl{\lng{ae}}\hfill\mbox{}}
+% \par\medskip
+% \acct{u}\enskip\textit{\acct{u}}\enskip\textsl{\acct{u}}\qquad
+% \acct{i}\enskip\textit{\acct{i}}\enskip\textsl{\acct{i}}\qquad
+% \acct{ae}\enskip\textit{\acct{ae}}\enskip\textsl{\acct{ae}}\hfill
+% {\sffamily
+% \acct{u}\enskip\textit{\acct{u}}\enskip\textsl{\acct{u}}\qquad
+% \acct{i}\enskip\textit{\acct{i}}\enskip\textsl{\acct{i}}\qquad
+% \acct{ae}\enskip\textit{\acct{ae}}\enskip\textsl{\acct{ae}}\hfill\mbox{}}
+% \par\normalsize
+%
+% \subsubsection*{Fine Tuning}
+% To make some fine tuning for a certain accent possible the three macros actually got
+% some additional, \emph{optional} arguments:
+% {\par\medskip\noindent\ttfamily
+% \cs{brv}+(+\meta{coordinate}+)+\Arg{vowel}\\
+% \cs{lng}+(+\meta{coordinate}+)+\oarg{left length}\Arg{vowel}\oarg{right length}\\
+% \cs{acct}+(+\meta{coordinate}+)+\Arg{vowel}\par}
+%
+% \medskip
+% Where \meta{coordinate} must be a valid \TikZ/ coordinate and can be used to move
+% the accent. In addition to that the accent produced by \cs{lng} can be extended
+% with \meta{left/right length} by a certain amount.
+%
+% \begin{example}
+% Prevent collision between accent and descender of an \textit{f}.
+% \begin{verbatim}
+% \itshape somn\acct(-0.05em,-0.45ex){i}fero
+% \end{verbatim}
+% \itshape somn\acct(-0.05em,-0.45ex){i}fero
+% \end{example}
+%
+% \begin{function}[EXP]{\bow}
+% \begin{syntax}
+% \cs{bow}\Arg{syllables}
+% \end{syntax}
+% \cs{bow} can be used to show the contraction of two vowels or syllables.
+% \end{function}
+% \begin{example}
+% \begin{verbatim}
+% mult\bow{um i}lle or d\bow{ei}nde
+% \end{verbatim}
+% mult\bow{um i}lle or d\bow{ei}nde
+% \end{example}
+%
+% \subsubsection*{Fine Tuning}
+% To make some fine tuning for a certain bow possible the macro actually has
+% some additional, \emph{optional} arguments:
+% {\par\medskip\noindent\ttfamily
+% \cs{bow}+(+\meta{coordinate}+)+\oarg{left length}\Arg{syllable}\oarg{right length}\par}
+%
+% \medskip
+% Where \meta{left/right length} can be used to shorten the bow by a certain amount.
+%
+% \begin{example}
+% Prevent collision between accent and bow.
+% \begin{verbatim}
+% c\acct{oe}-l\bow{um \acct{e}}[2pt]st
+% \end{verbatim}
+% c\acct{oe}-l\bow{um \acct{e}}[2pt]st
+% \end{example}
+%
+% \section{Environments}
+% \begin{function}{symbolline}
+% This environment can be used to display a line of stand alone symbols.
+% \end{function}
+% \begin{example}
+% \begin{verbatim}
+% Text text text ...
+% \begin{symbolline}
+% \metricsymbols{oo e _ u u _ e u _ e u _ u_}
+% \end{symbolline}
+% Text text text ...
+% \end{verbatim}
+% Text text text ...
+% \begin{symbolline}
+% \metricsymbols{oo e _ u u _ e u _ e u _ u_}
+% \end{symbolline}
+% Text text text ...
+% \end{example}
+% \begin{function}{metricverses}
+% \begin{syntax}
+% +\begin{metricverses}+\oarg{source}
+% \meta{content optional \cs{verseref}\Arg{reference}}
+% +\end{metricverses}+
+% \end{syntax}
+% Use this environment to display a verse with metric symbols, separate
+% multiple verses by a blank line.
+% \end{function}
+% \begin{example}
+% \begin{verbatim}
+% Text text text ...
+% \begin{metricverses}
+% \metrics{_ u u _ _ _ | _ _ u u _ _ _ }
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob-iec-tust}
+%
+% \metrics{_ u u _ u u _ | _ _ u u
+% _ u u _ }
+% {ei-us a-mor cu-pi-dam | {m\bow{e h}uc} pro-li-cit
+% per te-ne-bras}
+% \end{metricverses}
+% Text text text ...
+% \end{verbatim}
+% Text text text ...
+% \begin{metricverses}
+% \metrics{_ u u _ _ _ | _ _ u u _ _ _ }
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob-iec-tust}
+%
+% \metrics{_ u u _ u u _ | _ _ u u
+% _ u u _ }
+% {ei-us a-mor cu-pi-dam | {m\bow{e h}uc} pro-li-cit
+% per te-ne-bras}
+% \end{metricverses}
+% Text text text ...
+% \end{example}
+% \begin{function}{\verseref}
+% \begin{syntax}
+% \cs{verseref}\Arg{reference}
+% \end{syntax}
+% Inside of +{metricverses}+ you may use \cs{verseref} to print a reference.
+% \end{function}
+% \begin{example}
+% \begin{verbatim}
+% Text text text ...
+% \begin{metricverses}
+% \metrics{_ u u _ _ _ | _ _ u u _ _ _ }
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob-iec-tust}
+% \verseref{Plaut. \emph{Curc.} 96f}
+%
+% \metrics{_ u u _ u u _ | _ _ u u
+% _ u u _ }
+% {ei-us a-mor cu-pi-dam | {m\bow{e h}uc} pro-li-cit
+% per te-ne-bras}
+% \end{metricverses}
+% Text text text ...
+% \end{verbatim}
+% Text text text ...
+% \begin{metricverses}
+% \metrics{_ u u _ _ _ | _ _ u u _ _ _ }
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob-iec-tust}
+% \verseref{Plaut. \emph{Curc.} 96f}
+%
+% \metrics{_ u u _ u u _ | _ _ u u _ u u _ }
+% {ei-us a-mor cu-pi-dam | {m\bow{e h}uc} pro-li-cit per te-ne-bras}
+% \end{metricverses}
+% Text text text ...
+% \end{example}
+%
+% \section{FAQs}\label{sec:faq}
+% \subsection{How can I display the symbols below the syllables?}
+% Change the variable +symbolshift+ to a negative value.
+% \begin{example}
+% \begin{verbatim}
+% \setmetrixvar{symbolshift}{-0.6em}
+% % later ...
+% \metrics{_ u u _ _ _ | _ _ u u _ _ _ }
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob-iec-tust}
+% \end{verbatim}
+% \setmetrixvar{symbolshift}{-0.6em}
+% \metrics{_ u u _ _ _ | _ _ u u _ _ _ }
+% {flos ve-te-ris vi-ni | meis na-ri-bus ob-iec-tust}
+% \end{example}
+% \subsection{How can I combine two words below one symbol?}
+% Use braces +{}+ in the lists to keep them processed as one element.
+% \begin{example}
+% \begin{verbatim}
+% \metrics{u u _ | _ _ u u }
+% {cu-pi-dam | {m\bow{e h}uc} pro-li-cit }
+% \end{verbatim}
+% \metrics{u u _ | _ _ u u }
+% {cu-pi-dam | {m\bow{e h}uc} pro-li-cit }
+% \end{example}
+% \subsection{How can I show a hyphen character?}\label{faq:hyphen}
+% To escape a hyphen +-+ put it inside braces, but you must still
+% add an unbraced hypen to show \metrix/ where your syllables split.
+% \begin{example}
+% If you enclose the hyphen in braces together with a syllable, the symbol gets
+% centered above both.
+% \begin{verbatim}
+% \metrics{_ _ }
+% {vi-{-ni}}
+% \end{verbatim}
+% \metrics{_ _ }
+% {vi-{-ni}}
+% \par\smallskip\noindent
+% You can enclose only the hyphen in braces and treat it as a syllable
+% but then you must add an empty symbol +e+ too.
+% \begin{verbatim}
+% \metrics{_ e _ }
+% {vi-{-}-ni}
+% \end{verbatim}
+% \metrics{_ e _ }
+% {vi-{-}-ni}
+% \end{example}
+% \subsection{How can I use quotes in \cs{metrics}?}\label{faq:quotes}
+% It should be possible to use all shorthands (or direct input with Unicode) etc.
+% for quotation marks except the active
+% quotes of \pkg{csquotes}, which won't work inside the \cs{metrics} syllable list. It
+% is possible to use \pkg{csquotes} besides \metrix/ though.
+% \begin{example}
+% \begin{verbatim}
+% \metrics{ _ u }{ ``si me'' }
+% \metrics{ _ u }{ \glqq si me\grqq }% with \usepackage[<lang>]{babel}
+% \metrics{ _ u }{ "`si me"' }% with \usepackage[ngerman]{babel}
+% \end{verbatim}
+% \metrics{ _ u }{ ``si me'' }\quad
+% \metrics{ _ u }{ \glqq si me\grqq }\quad
+% \metrics{ _ u }{ \glqq si me\grqq }
+% \end{example}
+% \subsection{How can I add a superscript letter to a certain symbol?}
+% Use the +superscript+ highlighting style as described above.
+% \subsection{How can I make subscripts instead of superscripts?}
+% The easiest way is to use the +superscript+ style and change a part of
+% its definition to shift the superscripts to subscript positions.
+% \begin{example}
+% \begin{verbatim}
+% \metricsymbols[2={superscript=x}]{ u || u } \qquad vs. \qquad
+% % ...
+% \tikzset{
+% every superscript picture/.style={
+% baseline=1ex,
+% },
+% }
+% % ...
+% \metricsymbols[2={superscript=x}]{ u || u }
+% \end{verbatim}
+% \metricsymbols[2={superscript=x}]{ u || u } \qquad vs. \qquad
+% \tikzset{
+% every superscript picture/.style={
+% baseline=2ex,
+% },
+% }
+% \metricsymbols[2={superscript=x}]{ u || u }
+%
+% \medskip\noindent
+% Normally the +\tikzset+ should be part of your preamble, I used it this way to
+% show the differences.
+% \end{example}
+% \subsection{How can I highlight all symbols/syllables?}
+% \textbf{Way 1}\qquad Just call your desired highlighting style before using on of the macros
+% \cs{metrics} or \cs{metricsymbols}. You may enclose this in a group to not affect the other following
+% sequences. Mind that the higlighting styles must be in a way changing the +every ...+ styles
+% to make this way work.
+% \begin{example}
+% \begin{verbatim}
+% {% begin group
+% \tikzset{colored highlight}
+% \metrics{_ u u _ _ _ }
+% {flos ve-te-ris vi-ni}
+% }% end group
+% \end{verbatim}
+% \tikzset{colored highlight}
+% \metrics{_ u u _ _ _ }
+% {flos ve-te-ris vi-ni}
+% \end{example}
+% \par\medskip\noindent
+% \textbf{Way 2}\qquad Change the +every metrix ...+ styles.
+% \begin{example}
+% \begin{verbatim}
+% {% begin group
+% \tikzset{every metrix symbol/.append style={red}}
+% \metrics{_ u u _ _ _ }
+% {flos ve-te-ris vi-ni}
+% }% end group
+% \end{verbatim}
+% \tikzset{every metrix symbol/.append style={red}}
+% \metrics{_ u u _ _ _ }
+% {flos ve-te-ris vi-ni}
+% \end{example}
+% Leave out the grouping (and put this to your preamble) if yout want to highlight
+% the symbols in your whole document.
+% \subsection{How can I change the size of a symbol?}
+% Change the two base vector units.\pagebreak
+% \begin{example}
+% \begin{verbatim}
+% \setmetrixvar{baseunit}{1em}
+% \setmetrixvar{bigbaseunit}{1.6em}
+% \end{verbatim}
+% \end{example}
+% If you want to change the size of a single symbol to highlight it you must
+% create your own highlighting style.
+% \begin{example}
+% \begin{verbatim}
+% \tikzset{
+% bigger highlight/.style={
+% every metrix symbol/.append style={x=2.5em,y=2.5em,line width=1.5pt},
+% },
+% }
+% % later
+% \metricsymbols[2=bigger highlight]{u_uu x _ || u _ n x}
+% \end{verbatim}
+% \tikzset{
+% bigger highlight/.style={
+% every metrix symbol/.append style={x=2.5em,y=2.5em,line width=1.5pt},
+% },
+% }
+% \metricsymbols[2=bigger highlight]{u_uu x _ || u _ n x}
+% \end{example}
+% \subsection{How can I stop highlighting the syllables too?}\label{faq:highlight}
+% \textbf{Way 1}\qquad Change the highlight styles (in your preamble).
+% \begin{example}
+% \begin{verbatim}
+% \tikzset{
+% colored highlight/.style={
+% every metrix symbol/.append style={
+% draw=\usemetrixvar{highlightcolor},
+% },
+% },
+% }
+% % later ...
+% \metrics[3=colored highlight]{_ u u _ _ _ }
+% {flos ve-te-ris vi-ni}
+% \end{verbatim}
+% {\tikzset{
+% colored highlight/.style={
+% every metrix symbol/.append style={draw=\usemetrixvar{highlightcolor}},
+% }
+% }
+% \metrics[3=colored highlight]{_ u u _ _ _ }
+% {flos ve-te-ris vi-ni}}
+% \end{example}
+% \par\medskip\noindent
+% \textbf{Way 2}\qquad Create your own highlighting style, which is very similar
+% to way 1, as the following example shows. Every own style should change the apperance
+% by appending the settings to one of the +every ...+ styles.
+% \begin{example}
+% \begin{verbatim}
+% \tikzset{
+% my highlight/.style={
+% every metrix symbol/.append style={draw=blue,line width=0.07em},
+% }
+% }
+% \metrics[5=my highlight]{_ u u _ _ _ }
+% {flos ve-te-ris vi-ni}
+% \end{verbatim}
+% \tikzset{
+% my highlight/.style={
+% every metrix symbol/.append style={draw=blue,line width=0.1em},
+% }
+% }
+% \metrics[5=my highlight]{_ u u _ _ _ }
+% {flos ve-te-ris vi-ni}
+% \end{example}
+% \subsection{Why got the highlight styles that long names?}
+% To prevent conflict with other packages.
+% \begin{example}
+% If you want to shorten it create your own style as described above or use
+% \begin{verbatim}
+% \tikzset{
+% hl/.style={colored highlight}
+% }
+% \end{verbatim}
+% to map the style to a shorter name. Then you can use it like in
+% \begin{verbatim}
+% \metricsymbols[2=hl]{u _ _ u}
+% \end{verbatim}
+% \end{example}
+% \subsection{How can I change the font of all syllables?}
+% Extend the +every metrix syllable node+ style
+% \begin{example}
+% Print all syllables in italic with the following extension.
+% \begin{verbatim}
+% \tikzset{
+% every metrix syllable node/.append sytle={font=\itshape},
+% }
+% \end{verbatim}
+% \end{example}
+%
+% \section{Customization}
+% Some hints were already given in the FAQ section (see section~\ref{sec:faq}) but here I will
+% list all variables and \TikZ/ styles that are in use and can be changed to customize
+% \metrix/ easily.
+% \subsection{Variables}
+% \begin{function}{\setmetrixvar,\usemetrixvar}
+% To customize the rendering of the symbols, accents and bow \metrix/ has some variables
+% that you can change.
+% \begin{syntax}
+% \cs{setmetrixvar}\Arg{variable}\Arg{value}
+% \end{syntax}
+% Use \cs{setmetrixvar} to change a value. The variables and the default values are listed
+% in table~\ref{tab:variables}. To access a value you can use \cs{usemetrixvar}\Arg{variable}.
+% \end{function}
+% It is highly recommended to use font size depending units, i.e. +em+ or +ex+, for all lengthen
+% to keep the symbols usable in different font sizes, for example in headlines or footnotes.
+% \begin{example}
+% Change the highlighting color to blue.
+% \begin{verbatim}
+% \setmetrixvar{higlightcolor}{blue}
+% % later
+% \metrics[5=colored highlight]{_ u u _ _ _ }
+% {flos ve-te-ris vi-ni}
+% \end{verbatim}
+% \setmetrixvar{highlightcolor}{blue}
+% \metrics[5=colored highlight]{_ u u _ _ _ }
+% {flos ve-te-ris vi-ni}
+% \end{example}
+% \begin{example}
+% Create your own highlighting style but use the default highlighting color.
+% \begin{verbatim}
+% \tikzset{
+% my highlight/.style={
+% every metrix symbol/.append style={
+% draw=\usemetrixvar{highlightcolor},
+% line width=0.15em
+% },
+% },
+% }
+% \metrics[5=my highlight]{_ u u _ _ _ }
+% {flos ve-te-ris vi-ni}
+% \end{verbatim}
+% \tikzset{
+% my highlight/.style={
+% every metrix symbol/.append style={
+% draw=\usemetrixvar{highlightcolor},
+% line width=0.15em
+% },
+% },
+% }
+% \metrics[5=my highlight]{_ u u _ _ _ }
+% {flos ve-te-ris vi-ni}
+% \end{example}
+% \begin{longtabu}to \textwidth {ll>{\strut}X}
+% \caption{Variables\label{tab:variables}}\\
+% \toprule
+% \rowfont{\bfseries\sffamily} variable & default & explanation \\
+% \midrule
+% \endfirsthead
+% \caption{Variables (cont.)}\\
+% \toprule
+% \rowfont{\bfseries\sffamily} variable & default & explanation \\
+% \midrule
+% \endhead
+% \multicolumn{3}{r}{\dots}
+% \endfoot
+% \bottomrule
+% \endlastfoot
+% +symbollinewidth+ & +0.04em+ & line width of symbols above syllables and small stand alone symbols \\
+% +bigsymbollinewidth+ & +0.06em+ & line width of big stand alone symbols \\
+% +accentlinewidth+ & +0.03em+ & line width of accents (\cs{lng} and \cs{brv}) \\
+% +bowlinewidth+ & +0.03em+ & line width of bows (\cs{bow}) \\
+% +symbolsep+ & +0.4em+ & gap between symbols in stand alone lists \\
+% +baseunit+ & +0.9em+ & length of the base vector for drawing symbols above
+% syllables, small stand alone symbols, accents and bows\\
+% +bigbaseunit+ & +1.4em+ & length of the base vector for drawing stand alone symbols \\
+% +shortsyllablelimit+ & +0.8em+ & all syllables shorter than this can be treated specially, e.g.
+% they'll get a shorter elementum longum. \\
+% +gap+ & +0.09em+ & small gap between lines of the symbols, e.g. the distance between the
+% two lines of a verse break \\
+% +symbolshift+ & +1.1em+ & leght to shift the symbols above or below the syllables
+% (try +-0.6em+ to display the symbols below the base line) \\
+% +lngshift+ & +0.8em+ & length to shift the longa accent \\
+% +lngshortening+ & +0.075em+ & length to shorten the longa accent a little \\
+% +lngminlength+ & +0.25em+ & minimum width of a longa accent \\
+% +brvshift+ & +0.9em+ & length to shift the brevis accent \\
+% +dotshift+ & +-0.15em+ & length to shift the dot accent \\
+% +itcorrection+ & +0.11em+ & length to shift the accents above italic/slanted letters \\
+% +accentxshift+ & +-0.025em+ & length to shift the accents horizontally \\
+% +bowshift+ & +-0.15em+ & length to shift the bow below the base line \\
+% +bowshortening+ & +0.15em+ & length to shrink the bow a little \\
+% +bowlooseness+ & +0.75+ & value to influence the bending of the bow \\
+% +symbolcolor+ & +.+ (curr. color) & color of metric symbols \\
+% +accentcolor+ & +.+ (curr. color) & color of accents (\cs{lng} and \cs{brv}) \\
+% +bowcolor+ & +.+ (curr. color) & color of bows (\cs{bow}) \\
+% +highlightcolor+ & +red+ & color of highlighted symbols and syllabels
+% used in +colored highlight+ style \\
+% +fillcolor+ & +yellow+ & color of filled symbol +node+s
+% used in +filled highlight+ style \\
+% +arrow+ & +\$+\cs{downarrow}+\$+ & arrow for highlighting \\
+% +breakgap+ & +0.6em+ & gap before and after a (verse) break \\
+% +emptywidth+ & +1em+ & gap replacing an empty symbol (abbreviation +e+) \\
+% +acute+ & +\string\textasciiacute+ & acute accent character/symbol \\
+% +grave+ & +\string\textasciigrave+ & grave accent character/symbol \\
+% \end{longtabu}
+%
+% \subsection{\TikZ/ styles}\label{sec:styles}
+% Beside the variables you may change the \TikZ/ styles used by \metrix/. But please mind
+% that all styles are not empty by default so you should prefer +/.append style+ against
+% +/.style+. Otherwise it may cause strange effects. Remind that you can use \cs{usemetrixvar}
+% to access a variable.
+% \begin{variable}{every metrix symbol, every metrix big symbol, every metrix symbol node}
+% These three styles define the apperance of the metric symbols. They define the line width,
+% the color, the basis vectors and other things.
+% \end{variable}
+% \begin{variable}{every metrix syllable node,every metrix break node}
+% These styles defines the +node+s in which a syllable or a break symbol (the ones spanning across
+% the symbol and the syllable line) is typeset, e.g. it aligns these +node+s at their base line.
+% \end{variable}
+% \begin{variable}{every metrix ictus node}
+% This style defines the apperance of accents above symbols (ictus, e.g. +/u+).
+% \end{variable}
+% \begin{variable}{every metrix accent}
+% This style defines the apperance of accents created by \cs{lng} and \cs{brv}.
+% \end{variable}
+% \begin{variable}{every metrix bow}
+% This style defines the apperance of bows below symbols.
+% \end{variable}
+% \begin{variable}{bold highlight,colored highlight,dashed highlight,filled highlight,superscript}
+% These styles can be used to highlight a certain symbol.
+% \end{variable}
+% \begin{variable}{every superscript picture,every superscript node,every superscript label}
+% These styles are used to define the +superscript+ highlighting style.
+% \end{variable}
+% \begin{variable}{every metrix added text}
+% This style is used for text added to a symbol with the +add text+ highlighting.
+% \end{variable}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{Implementation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=metrix>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ProvidesExplPackage
+ {\metrixFileName}{\metrixFileDate}{\metrixFileVersion}{\metrixFileDescription}
+% \end{macrocode}
+%
+% \subsection{Required packages}
+% \begin{macrocode}
+\RequirePackage{xparse}
+\RequirePackage{xpatch}
+\RequirePackage{tikz}
+\ExplSyntaxOff
+ \usetikzlibrary{calc}
+\ExplSyntaxOn
+\RequirePackage{textcomp}
+% \end{macrocode}
+%
+% \subsection{Constants and internal variables}
+% These constants variables are for internal use only and can't be changed/accessed by the user.
+% \subsubsection{Constants}
+% \begin{variable}[internal]{\c_@@_acute_accent_tl}
+% Constant holding an acute accent char.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_acute_accent_tl { / }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\c_@@_acute_accent_tl}
+% Constant holding an grave accent char.
+% \begin{macrocode}
+\tl_const:Nn \c_@@_grave_accent_tl { * }
+% \end{macrocode}
+% \end{variable}
+% \subsubsection{Variables}
+% \begin{variable}[internal]{\l_@@_words_tl}
+% This list stores the words of the \cs{metrics} macro.
+% \begin{macrocode}
+\tl_new:N \l_@@_words_tl
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\l_@@_syllables_seq}
+% This list stores the words of the \cs{l_@@_words_tl} list.
+% \begin{macrocode}
+\seq_new:N \l_@@_syllables_seq
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\l_@@_symbols_seq}
+% This list stores the metric symbols of \cs{metrics} and \cs{metricsymbols}.
+% \begin{macrocode}
+\seq_new:N \l_@@_symbols_seq
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\l_@@_short_breaks_seq,\l_@@_foot_breaks_seq}
+% This list stores the short and foot breaks of \cs{metrics}.
+% \begin{macrocode}
+\seq_new:N \l_@@_short_breaks_seq
+\seq_new:N \l_@@_foot_breaks_seq
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\l_@@_highlights_prop}
+% This list stores the higlighting styles of \cs{metrics} and \cs{metricsymbols}.
+% \begin{macrocode}
+\prop_new:N \l_@@_highlights_prop
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\l_@@_highlight_seq,\l_@@_highlight_pos_seq}
+% This lists are used to evaluate a higlight style.
+% \begin{macrocode}
+\seq_new:N \l_@@_highlight_seq
+\seq_new:N \l_@@_highlight_pos_seq
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\q_@@_space_marker}
+% This is the marker for spaces inside of the \cs{l_@@_words_tl} list.
+% \begin{macrocode}
+\quark_new:N \q_@@_space_marker
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\l_@@_process_int}
+% This process counter is used to combine the symbols and syllables.
+% \begin{macrocode}
+\int_new:N \l_@@_process_int
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\l_@@_short_syllable_bool,\l_@@_syllable_box,\g_@@_variable_shortsyllablelimit_tl}
+% This boolean can be used to store that a syllable is short, e.g. \emph{li} will be defined
+% as short wheras \emph{man} is long. That will be used to shorten the |_| symbol. Furthermore
+% we'll need a box to measure the length of a syllable and a variable to save the limit for
+% short syllables.
+% \begin{macrocode}
+\bool_new:N \l_@@_short_syllable_bool
+\box_new:N \l_@@_syllable_box
+\tl_new:N \g_@@_variable_shortsyllablelimit_tl
+\tl_set:Nn \g_@@_variable_shortsyllablelimit_tl { 0.8em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\l_@@_current_symbol_tl}
+% Variable holding the current symbol abbreviation.
+% \begin{macrocode}
+\tl_new:N \l_@@_current_symbol_tl
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\l_@@_current_symbol_head_tl}
+% Variable holding firt char of the current symbol abbreviation.
+% \begin{macrocode}
+\tl_new:N \l_@@_current_symbol_head_tl
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\l_@@_has_acute_accent_bool}
+% Bool for switching on an acute accent of a symbol.
+% \begin{macrocode}
+\bool_new:N \l_@@_has_acute_accent_bool
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\l_@@_has_grave_accent_bool}
+% Bool for switching on an grave accent of a symbol.
+% \begin{macrocode}
+\bool_new:N \l_@@_has_grave_accent_bool
+% \end{macrocode}
+% \end{variable}
+%
+% \subsection{User variables}
+% These variables save things, the user can change via \cs{setmetrixvar} and use
+% via \cs{usemetrixvar}.
+% \begin{variable}[internal]{\g_@@_variable_symbollinewidth_tl}
+% This variable stores the line width for all metric symbols above (or below) syllables.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_symbollinewidth_tl
+\tl_set:Nn \g_@@_variable_symbollinewidth_tl { 0.04em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_bigsymbollinewidth_tl}
+% This variable stores the line width for all stand alone metric symbols.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_bigsymbollinewidth_tl
+\tl_set:Nn \g_@@_variable_bigsymbollinewidth_tl { 0.06em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_accentlinewidth_tl}
+% This variable stores the line width of the accent like symbols.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_accentlinewidth_tl
+\tl_set:Nn \g_@@_variable_accentlinewidth_tl { 0.04em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_bowlinewidth_tl}
+% This variable stores the line width of the bow.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_bowlinewidth_tl
+\tl_set:Nn \g_@@_variable_bowlinewidth_tl { 0.04em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_symbolsep_tl}
+% This variable stores the gap between two or more stand alone metric symbols.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_symbolsep_tl
+\tl_set:Nn \g_@@_variable_symbolsep_tl { 0.4em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_baseunit_tl}
+% This variable stores the length of the basis vector for all metric symbols above (or below)
+% syllables and accent like symbols.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_baseunit_tl
+\tl_set:Nn \g_@@_variable_baseunit_tl { 0.9em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_bigbaseunit_tl}
+% This variable stores the length of the basis vector for all stand alone metric symbols.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_bigbaseunit_tl
+\tl_set:Nn \g_@@_variable_bigbaseunit_tl { 1.4em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_gap_tl}
+% Length for small gaps in the symbols, e.g. the gap between the two bows of an elementum biceps.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_gap_tl
+\tl_set:Nn \g_@@_variable_gap_tl { 0.09em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_symbolshift_tl}
+% This variable stores the value to shift metric symbols above (or below) syllables.
+% Set this variable to approx +1.1em+ to draw the symbols above the syllable and to +-0.6em+
+% to draw them below.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_symbolshift_tl
+\tl_set:Nn \g_@@_variable_symbolshift_tl { 1.1em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_lngshift_tl}
+% This variable stores the value to shift the longa accent.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_lngshift_tl
+\tl_set:Nn \g_@@_variable_lngshift_tl { 0.15em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_lngshortening_tl}
+% This variable stores the value to shorten the longa accent.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_lngshortening_tl
+\tl_set:Nn \g_@@_variable_lngshortening_tl { 0.075em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_lngminlength_tl}
+% This variable stores the value to shorten the longa accent.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_lngminlength_tl
+\tl_set:Nn \g_@@_variable_lngminlength_tl { 0.25em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_brvshift_tl}
+% This variable stores the value to shift the brevis accent.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_brvshift_tl
+\tl_set:Nn \g_@@_variable_brvshift_tl { 0.25em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_dotshift_tl}
+% This variable stores the value to shift the brevis accent.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_dotshift_tl
+\tl_set:Nn \g_@@_variable_dotshift_tl { -0.15em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{
+% \g_@@_variable_itcorrection_tl,
+% \l_@@_internal_itcorrection_tl,
+% \g_@@_internal_itcorrection_zero_tl}
+% These variables are used to set the italic correction of accents.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_itcorrection_tl
+\tl_set:Nn \g_@@_variable_itcorrection_tl { 0.11em }
+\tl_new:N \l_@@_internal_itcorrection_tl
+\tl_set:Nn \l_@@_internal_itcorrection_tl { 0em }
+\tl_new:N \g_@@_internal_itcorrection_zero_tl
+\tl_set:Nn \g_@@_internal_itcorrection_zero_tl { 0em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_accentxshift_tl}
+% This variable ise used to shift the accents horizontally.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_accentxshift_tl
+\tl_set:Nn \g_@@_variable_accentxshift_tl { -0.025em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_bowshift_tl}
+% This variable stores the value to shift the bow.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_bowshift_tl
+\tl_set:Nn \g_@@_variable_bowshift_tl { -0.15em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_bowshortening_tl}
+% This variable stores the value to shrink the bow.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_bowshortening_tl
+\tl_set:Nn \g_@@_variable_bowshortening_tl { 0.15em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_bowlooseness_tl}
+% This variable stores the value to shrink the bow.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_bowlooseness_tl
+\tl_set:Nn \g_@@_variable_bowlooseness_tl { 0.75 }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]
+% {\g_@@_variable_symbolcolor_tl,\g_@@_variable_accentcolor_tl,g_@@_variable_bowcolor_tl}
+% \changes{v1.4}{2016/03/29}{Changed symbol and accent color to current color.}
+% These variables store the color of symbols, accents and bows.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_symbolcolor_tl
+\tl_set:Nn \g_@@_variable_symbolcolor_tl { . }
+\tl_new:N \g_@@_variable_accentcolor_tl
+\tl_set:Nn \g_@@_variable_accentcolor_tl { . }
+\tl_new:N \g_@@_variable_bowcolor_tl
+\tl_set:Nn \g_@@_variable_bowcolor_tl { . }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]
+% {\g_@@_variable_highlightcolor_tl}
+% These variable stores the color used in the +colored highlight+ style.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_highlightcolor_tl
+\tl_set:Nn \g_@@_variable_highlightcolor_tl { red }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]
+% {\g_@@_variable_fillcolor_tl}
+% These variable stores the color used in the +filled highlight+ style.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_fillcolor_tl
+\tl_set:Nn \g_@@_variable_fillcolor_tl { yellow }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]
+% {\g_@@_variable_arrow_tl}
+% \changes{v1.3}{2016/03/21}{New variable for arrow}
+% These variable stores the color used in the +filled highlight+ style.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_arrow_tl
+\tl_set:Nn \g_@@_variable_arrow_tl { $\downarrow$ }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_breakgap_tl}
+% This variable stores the width of the gap around the two break symbols.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_breakgap_tl
+\tl_set:Nn \g_@@_variable_breakgap_tl { 0.6em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_emptywidth_tl}
+% This variable stores the width of the gap caused by an empty symbol (abbreviation +e+).
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_emptywidth_tl
+\tl_set:Nn \g_@@_variable_emptywidth_tl { 1em }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_acute_tl}
+% This variable stores acute symbol.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_acute_tl
+\tl_set:Nn \g_@@_variable_acute_tl { \textasciiacute }
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}[internal]{\g_@@_variable_grave_tl}
+% This variable stores grave symbol.
+% \begin{macrocode}
+\tl_new:N \g_@@_variable_grave_tl
+\tl_set:Nn \g_@@_variable_grave_tl { \textasciigrave }
+% \end{macrocode}
+% \end{variable}
+%
+% \subsection{Variants}
+% Later we'll need the following variant.
+% \begin{macrocode}
+\cs_generate_variant:Nn \prop_item:Nn { No , Nf , NV , Nx }
+\cs_generate_variant:Nn \prop_put:Nnn { Nnx , Nxx , Nff , Noo }
+\cs_generate_variant:Nn \seq_item:Nn { Nf , NV , Nx }
+\cs_generate_variant:Nn \seq_set_split:Nnn { Nnf , NnV , Nnx }
+\cs_generate_variant:Nn \tl_remove_once:Nn { NV }
+% \end{macrocode}
+%
+% \subsection{Internal main macros}
+% \begin{macro}[internal,updated=2014/07/02]{\@@_metrics:nn}
+% \changes{v1.1}{2014/07/02}{Made short breaks available}
+% \changes{v1.3}{2016/03/16}{Extended short breaks feature}
+% This macro processes the two lists of \cs{metrics} and combines the symbols
+% and syllables.\footnote{The framing of this macro was provided by Enrico Gregorio at
+% \url{http://tex.stackexchange.com/q/124528/4918}, a follow up question
+% was \url{http://tex.stackexchange.com/q/124698/4918}. David Carlisle and Bruno Le Floch
+% lead me to the implementation of the highlighting mechanism, see
+% \url{http://tex.stackexchange.com/q/124782/4918}}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_metrics:nn #1 #2
+ {
+ \tl_set:Nx \l_@@_words_tl { \tl_trim_spaces:n { #2 } }
+% \end{macrocode}
+% First replace the spaces by a special marker \cs{q_@@_space_marker} and add
+% hyphens: a space becomes a syllable.
+% \begin{macrocode}
+ \tl_replace_all:Nnn \l_@@_words_tl { ~ } { - \q_@@_space_marker - }
+% \end{macrocode}
+% Then split the word list at hypens.
+% \begin{macrocode}
+ \seq_set_split:NnV \l_@@_syllables_seq { - } \l_@@_words_tl
+% \end{macrocode}
+% Split the symbol list at spaces.
+% \begin{macrocode}
+ \seq_set_split:Nnx \l_@@_symbols_seq { ~ } { \tl_trim_spaces:n { #1 } }
+% \end{macrocode}
+% Search for the short and foot breaks and remove them afterwards.
+% \begin{macrocode}
+ \int_zero:N \l_@@_process_int
+ \seq_clear:N \l_@@_short_breaks_seq
+ \seq_clear:N \l_@@_foot_breaks_seq
+ \seq_map_inline:Nn \l_@@_symbols_seq {
+ \int_incr:N \l_@@_process_int
+ \tl_if_eq:nnT { ##1 } { ' } {
+ \seq_put_right:Nx \l_@@_short_breaks_seq { \int_use:N \l_@@_process_int }
+ \int_decr:N \l_@@_process_int
+ }
+ \tl_if_eq:nnT { ##1 } { , } {
+ \seq_put_right:Nx \l_@@_foot_breaks_seq { \int_use:N \l_@@_process_int }
+ \int_decr:N \l_@@_process_int
+ }
+ }
+ \seq_remove_all:Nn \l_@@_symbols_seq { , }
+ \seq_remove_all:Nn \l_@@_symbols_seq { ' }
+% \end{macrocode}
+% Test whether both lists got the same length:
+% \begin{macrocode}
+ \int_zero:N \l_@@_process_int
+ \seq_map_inline:Nn \l_@@_syllables_seq
+ {
+ \tl_if_eq:nnT { ##1 } { \q_@@_space_marker }
+ { \int_incr:N \l_@@_process_int }
+ }
+ \int_compare:nTF
+ {
+ \seq_count:N \l_@@_syllables_seq -
+ \seq_count:N \l_@@_symbols_seq = \l_@@_process_int
+ }
+ {
+% \end{macrocode}
+% continue with list processing, if the numbers are equal:
+% \begin{macrocode}
+ \int_zero:N \l_@@_process_int
+ \seq_map_inline:Nn \l_@@_syllables_seq
+ {
+ \int_incr:N \l_@@_process_int
+ \tl_if_eq:nnTF { ##1 } { \q_@@_space_marker }
+ {
+% \end{macrocode}
+% If the syllable is a space the process counter must be decremented and
+% a space is typeset.
+% \begin{macrocode}
+ \int_add:Nn \l_@@_process_int { -1 }
+ \c_space_token
+ }
+ {
+% \end{macrocode}
+% Finally typeset the syllable and it's symbol.
+% \changes{v1.1a}{2015/07/23}{Replaced deprecated \cs{str_case:nnn} with \cs{str_case:nnF}.}
+% \begin{macrocode}
+ \str_case:nnF { ##1 }
+ {
+ { | }
+ {
+ \@@_break_node:n { \@@_l_break: }
+ }
+ { || }
+ {
+ \@@_break_node:n { \@@_ll_break: }
+ }
+ }
+ {
+ \@@_print_syllable:n { ##1 }
+ }
+ }
+ }
+% \end{macrocode}
+% And add the short break symbols if necessary:
+% \begin{macrocode}
+ \seq_if_empty:NF \l_@@_short_breaks_seq {
+ \seq_map_inline:Nn \l_@@_short_breaks_seq {
+ \int_set:Nn \l_tmpa_int { ##1 - 1 }
+ \bool_if:nF {
+ \int_compare_p:n
+ { 0 = \l_tmpa_int }
+ ||
+ \int_compare_p:n
+ { \seq_count:N \l_@@_symbols_seq = \l_tmpa_int }
+ } {
+ \tikz [remember~picture, overlay] {
+ \node [every~metrix~symbol~node] at
+ ($(l_@@_symbol_node_\int_use:N \l_tmpa_int.east)!
+ 0.5!(l_@@_symbol_node_##1.west)$)
+ { \@@_short_break: };
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% And add the foot break symbols if necessary:
+% \begin{macrocode}
+ \seq_if_empty:NF \l_@@_foot_breaks_seq {
+ \seq_map_inline:Nn \l_@@_foot_breaks_seq {
+ \int_set:Nn \l_tmpa_int { ##1 - 1 }
+ \bool_if:nF {
+ \int_compare_p:n
+ { 0 = \l_tmpa_int }
+ ||
+ \int_compare_p:n
+ { \seq_count:N \l_@@_symbols_seq = \l_tmpa_int }
+ } {
+ \tikz [remember~picture, overlay] {
+ \coordinate (l_@@_tmp_coord) at
+ ($(l_@@_syllable_node_\int_use:N \l_tmpa_int.east)!
+ 0.5!(l_@@_syllable_node_##1.west)$);
+ \node [every~metrix~symbol~node] at
+ ($(l_@@_symbol_node_\int_use:N \l_tmpa_int.east)!
+ (l_@@_tmp_coord)!(l_@@_symbol_node_##1.west)$)
+ { \@@_foot_break: };
+ }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% Send an error, else.
+% \begin{macrocode}
+ {
+ \@@_error_msg:n
+ {
+ Numbers~of~symbols~(\seq_count:N \l_@@_symbols_seq)~and~syllables~
+ (\int_eval:n
+ {
+ \seq_count:N \l_@@_syllables_seq - \l_@@_process_int
+ }
+ )~mismatch.
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[internal]{\@@_metricsymbols:n}
+% This macro works like \cs{\__metrix_metrics} but is used to print stand alone metric
+% symbols via \cs{metricsymbols}.
+% \changes{v1.1a}{2015/07/23}{Replaced deprecated \cs{str_case:nnn} with \cs{str_case:nnF}.}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_metricsymbols:n #1
+ {
+ \seq_set_split:Nnx \l_@@_symbols_seq { ~ } { \tl_trim_spaces:n { #1 } }
+ \int_zero:N \l_@@_process_int
+ \seq_map_inline:Nn \l_@@_symbols_seq
+ {
+ \int_incr:N \l_@@_process_int
+ \int_compare:nT { \l_@@_process_int > 1 }
+ {
+ \hspace { \usemetrixvar{symbolsep} }
+ }
+ \str_case:nnF { ##1 }
+ {
+ { , }
+ {
+ \@@_break_gap:
+ \@@_align_symbol:n { \@@_l_bigmark: }
+ \@@_break_gap:
+ }
+ { ' }
+ {
+ \@@_break_gap:
+ \@@_align_symbol:n { \@@_l_bigmark: }
+ \@@_break_gap:
+ }
+ { | }
+ {
+ \@@_break_gap:
+ \@@_align_symbol:n { \@@_l_bigmark: }
+ \@@_break_gap:
+ }
+ { '' }
+ {
+ \@@_break_gap:
+ \@@_align_symbol:n { \@@_ll_bigmark: }
+ \@@_break_gap:
+ }
+ { || }
+ {
+ \@@_break_gap:
+ \@@_align_symbol:n { \@@_ll_bigmark: }
+ \@@_break_gap:
+ }
+ }
+ {
+ \@@_align_symbol:n { \@@_print_symbol: }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal,updated=2014/07/02]{\@@_print_syllable:n}
+% \changes{v1.1}{2014/07/02}{Symbol nodes get individual names now.}
+% This macro combines a single syllable and the corrosponding metric symbol
+% taken frome the symbol list index with the process counter.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_print_syllable:n #1
+ {
+ \group_begin:
+% \end{macrocode}
+% Check wether the current syllable is short or long and set the corresponding bbol.
+% \begin{macrocode}
+ \hbox_set:Nn \l_@@_syllable_box { #1 }
+ \dim_compare:nTF
+ { \box_wd:N \l_@@_syllable_box < \g_@@_variable_shortsyllablelimit_tl }
+ { \bool_set_true:N \l_@@_short_syllable_bool }
+ { \bool_set_false:N \l_@@_short_syllable_bool }
+% \end{macrocode}
+% Set up the currend highlight is it is definded
+% \begin{macrocode}
+ \cs_set:Npx \@@_current_highlight: {
+ \prop_item:NV \l_@@_highlights_prop \l_@@_process_int
+ }
+ \expandafter\tikzset\expandafter{\@@_current_highlight:}
+% \end{macrocode}
+% Finally print the syllable and the symbol above. Use +{pgfinterruptboundingbox}+
+% so that the symbol doesn't takes space ad doesn't cause gaps between the syllables.
+% \begin{macrocode}
+ \hbox_set:Nn \l_tmpa_box { \@@_print_symbol: }
+ \begin{tikzpicture}
+ [
+ remember~picture,
+ baseline=(l_@@_syllable_node_\int_use:N \l_@@_process_int.base),
+ ]
+ \node [every~metrix~syllable~node]
+ (l_@@_syllable_node_\int_use:N \l_@@_process_int)
+ { #1 };
+ \begin{pgfinterruptboundingbox}
+ \node [every~metrix~symbol~node]
+ (l_@@_symbol_node_\int_use:N \l_@@_process_int)
+ at ($
+ (l_@@_syllable_node_\int_use:N \l_@@_process_int.base)
+ +
+ (0,\usemetrixvar{symbolshift})
+ +
+ (\tl_use:N \l_@@_internal_itcorrection_tl,0)
+ $)
+ { \box_use:N \l_tmpa_box };
+ \end{pgfinterruptboundingbox}
+ \end{tikzpicture}
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_print_symbol:}
+% This command selects the right symbol by it's abbreviation.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_print_symbol:
+ {
+ \tl_set:Nx \l_@@_current_symbol_tl
+ {
+ \seq_item:Nn \l_@@_symbols_seq { \l_@@_process_int }
+ }
+ \tl_set:Nx \l_@@_current_symbol_head_tl
+ {
+ \tl_head:N \l_@@_current_symbol_tl
+ }
+ \tl_case:NnT \l_@@_current_symbol_head_tl
+ {
+ \c_@@_acute_accent_tl { \bool_set_true:N \l_@@_has_acute_accent_bool }
+ \c_@@_grave_accent_tl { \bool_set_true:N \l_@@_has_grave_accent_bool }
+ }
+ {
+ \tl_remove_once:NV \l_@@_current_symbol_tl \l_@@_current_symbol_head_tl
+ }
+ \cs_if_exist_use:cF
+ {
+ @@_
+ \tl_use:N \l_@@_current_symbol_tl
+ _mark:
+ }
+ {
+ \@@_error_msg:n
+ {
+ Unknown~symbol~abbreviation~'\tl_use:N \l_@@_current_symbol_tl'.
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Internal auxiliary macros}
+% \begin{macro}[internal]{\@@_error_msg:n}
+% An abbreviation to throw an error message.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_error_msg:n #1
+ {
+ \PackageError{ \metrixFileName } { #1 }
+ {
+ Please~take~a~look~at~the~manual~or~send~an~email.
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_warning_msg:n}
+% An abbreviation to throw an error message.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_warning_msg:n #1
+ {
+ \PackageWarning{ \metrixFileName } { #1 }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_align_symbol:n}
+% This macro alings the metric symbols in a stand alone list.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_align_symbol:n #1
+ {
+ \group_begin:
+ \cs_set:Npx \@@_current_highlight: {
+ \prop_item:NV \l_@@_highlights_prop \l_@@_process_int
+ }
+ \expandafter\tikzset\expandafter{\@@_current_highlight:}
+ \begin{tikzpicture}
+ [
+ baseline={(0,-0.25*\usemetrixvar{baseunit})},
+ ]
+ \node [every~metrix~symbol~node] {#1};
+ \end{tikzpicture}
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_break_gap:}
+% This macro typesets the gap around the two break symbols.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_break_gap:
+ {
+ \hspace { \usemetrixvar { breakgap } }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_break_node:n}
+% This macro typsets the gap around the two break symbols.
+% \begin{macrocode}
+\cs_new:Npn \@@_break_node:n #1
+ {
+ \group_begin:
+ \cs_set:Npx \@@_current_highlight: {
+ \prop_item:NV \l_@@_highlights_prop \l_@@_process_int
+ }
+ \expandafter\tikzset\expandafter{\@@_current_highlight:}
+ \tikz[baseline=(l_@@_break_node.base)]
+ \node (l_@@_break_node) [every~metrix~break~node] { #1 }
+ ;
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_e_gap:}
+% This macro typsets the gap around the two break symbols.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_e_gap:
+ {
+ \hspace* { \usemetrixvar { emptywidth } }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_evaluate_higlights:N}
+% This macro evaluates and prints the highlighting options.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_evaluate_higlights:n #1
+ {
+% \end{macrocode}
+% Start with clearing the property list, otherwise the highlights from
+% the last time will survive.
+% \begin{macrocode}
+ \prop_clear:N \l_@@_highlights_prop
+% \end{macrocode}
+% Then spilt and process the argument as a comma separated list.
+% \begin{macrocode}
+ \clist_map_inline:nn { #1 }
+ {
+% \end{macrocode}
+% The result is a sequence of key value pairs that we store in
+% \cs{l_@@_highlight_seq}. The first part of this sequence must
+% be split again at the plus sign---store it in \cs{l_@@_highlight_pos_seq}.
+% \begin{macrocode}
+ \seq_set_split:Nnn \l_@@_highlight_seq { = } { ##1 }
+ \seq_set_split:Nnf \l_@@_highlight_pos_seq { + }
+ {
+ \seq_item:Nn \l_@@_highlight_seq { 1 }
+ }
+% \end{macrocode}
+% Process the \cs{l_@@_highlight_pos_seq} list and set up the property list:
+% \begin{macrocode}
+ \seq_map_inline:Nn \l_@@_highlight_pos_seq
+ {
+ \prop_put:Nnx \l_@@_highlights_prop
+% \end{macrocode}
+% The key is the current item of \cs{l_@@_highlight_pos_seq}.
+% \begin{macrocode}
+ {
+ ####1
+ }
+ {
+% \end{macrocode}
+% The value is the second item of \cs{l_@@_highlight_seq}.
+% \begin{macrocode}
+ \seq_item:Nn \l_@@_highlight_seq { 2 }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Patching font macros}
+% To apply the italic correction of the accents we need to patch the font switches.
+% \begin{macrocode}
+\xpretocmd { \itshape }
+ {
+ \tl_set_eq:NN
+ \l_@@_internal_itcorrection_tl
+ \g_@@_variable_itcorrection_tl
+ }
+ { }
+ {
+ \@@_warning_msg:n { Could~not~patch~\string\itshape. }
+ }
+\xpretocmd { \slshape }
+ {
+ \tl_set_eq:NN
+ \l_@@_internal_itcorrection_tl
+ \g_@@_variable_itcorrection_tl
+ }
+ { }
+ {
+ \@@_warning_msg:n { Could~not~patch~\string\slshape. }
+ }
+\xpretocmd { \upshape }
+ {
+ \tl_set_eq:NN
+ \l_@@_internal_itcorrection_tl
+ \g_@@_internal_itcorrection_zero_tl
+ }
+ { }
+ {
+ \@@_warning_msg:n { Could~not~patch~\string\upshape. }
+ }
+\xpretocmd { \normalfont }
+ {
+ \tl_set_eq:NN
+ \l_@@_internal_itcorrection_tl
+ \g_@@_internal_itcorrection_zero_tl
+ }
+ { }
+ {
+ \@@_warning_msg:n { Could~not~patch~\string\normalfont. }
+ }
+% \end{macrocode}
+%
+% \subsection{Internal macros for metric symbols}
+%
+% \begin{macro}[internal]{\@@_e_mark:}
+% The empty symbol.
+% \begin{macrocode}
+\cs_new:Npn \@@_e_mark: { \@@_e_gap: }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_u_mark:}
+% The brevis symbol \metricsymbols*{u}.
+% \begin{macrocode}
+\cs_new:Npn \@@_u_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) arc [start~angle=0, end~angle=180, radius=-0.225];
+ \bool_if:NT \l_@@_has_acute_accent_bool
+ {
+ \node [every~metrix~ictus~node] at (0.225,0) { \usemetrixvar { acute } };
+ }
+ \bool_if:NT \l_@@_has_grave_accent_bool
+ {
+ \node [every~metrix~ictus~node] at (0.225,0) { \usemetrixvar { grave } };
+ }
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@___mark:}
+% The longa symbol \MakePrivateLetters\metricsymbols*{_}.
+% \begin{macrocode}
+\cs_new:Npn \@@___mark:
+ {
+ \bool_if:NTF \l_@@_short_syllable_bool
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) -- ++(0.4,0);
+ \bool_if:NT \l_@@_has_acute_accent_bool
+ {
+ \node [every~metrix~ictus~node] at (0.2,0) { \usemetrixvar { acute } };
+ }
+ \bool_if:NT \l_@@_has_grave_accent_bool
+ {
+ \node [every~metrix~ictus~node] at (0.2,0) { \usemetrixvar { grave } };
+ }
+ \end{tikzpicture}
+ }
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) -- ++(0.75,0);
+ \bool_if:NT \l_@@_has_acute_accent_bool
+ {
+ \node [every~metrix~ictus~node] at (0.375,0) { \usemetrixvar { acute } };
+ }
+ \bool_if:NT \l_@@_has_grave_accent_bool
+ {
+ \node [every~metrix~ictus~node] at (0.375,0) { \usemetrixvar { grave } };
+ }
+ \end{tikzpicture}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_uu_mark:}
+% The biceps symbol \MakePrivateLetters\metricsymbols*{uu_}.
+% \begin{macrocode}
+\cs_new:Npn \@@_uu_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) arc [start~angle=0, end~angle=180, radius=-0.2];
+ \draw ($(0.4,0)+(\pgflinewidth,0)+(\usemetrixvar{gap},0)$) arc
+ [start~angle=0, end~angle=180, radius=-0.2];
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_uu__mark:}
+% The biceps symbol \MakePrivateLetters\metricsymbols*{uu_}.
+% \begin{macrocode}
+\cs_new:Npn \@@_uu__mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) arc [start~angle=0, end~angle=180, radius=-0.2];
+ \draw ($(0.4,0)+(\pgflinewidth,0)+(\usemetrixvar{gap},0)$) arc
+ [start~angle=0, end~angle=180, radius=-0.2];
+ \draw ($(0,-0.2)+(-0.5\pgflinewidth,-\pgflinewidth)-(0,\usemetrixvar{gap})$) --
+ ($(0.8,-0.2)+(1.5\pgflinewidth,-\pgflinewidth)
+ +(\usemetrixvar{gap},-\usemetrixvar{gap})$);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@__uu_mark:}
+% Another biceps symbol \MakePrivateLetters\metricsymbols*{_uu}.
+% \begin{macrocode}
+\cs_new:Npn \@@__uu_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) arc [start~angle=0, end~angle=180, radius=-0.2];
+ \draw ($(0.4,0)+(\pgflinewidth,0)+(\usemetrixvar{gap},0)$) arc
+ [start~angle=0, end~angle=180, radius=-0.2];
+ \draw ($(0,0)+(-0.5\pgflinewidth,0.5\pgflinewidth)+(0,\usemetrixvar{gap})$) --
+ ($(0.8,0)+(1.5\pgflinewidth,0.5\pgflinewidth)
+ +(\usemetrixvar{gap},\usemetrixvar{gap})$);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_u_uu_mark:}
+% An another biceps symbol \MakePrivateLetters\metricsymbols*{u_uu}.
+% \begin{macrocode}
+\cs_new:Npn \@@_u_uu_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) arc [start~angle=0, end~angle=180, radius=-0.2];
+ \draw ($(0.4,0)+(\pgflinewidth,0)+(\usemetrixvar{gap},0)$) arc
+ [start~angle=0, end~angle=180, radius=-0.2];
+ \draw ($(0,0)+(-0.5\pgflinewidth,0.5\pgflinewidth)+(0,\usemetrixvar{gap})$) --
+ ($(0.8,0)+(1.5\pgflinewidth,0.5\pgflinewidth)
+ +(\usemetrixvar{gap},\usemetrixvar{gap})$);
+ \draw ($(0.2,0.2)+(0.5\pgflinewidth,1.5\pgflinewidth)
+ +(0.5*\usemetrixvar{gap},2*\usemetrixvar{gap})$)
+ arc [start~angle=0, end~angle=180, radius=-0.2];
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_x_mark:}
+% The anceps symbol \metricsymbols*{x}.
+% \begin{macrocode}
+\cs_new:Npn \@@_x_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (-0.2,0.2) -- (0.2,-0.2);
+ \draw (-0.2,-0.2) -- (0.2,0.2);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_v_mark:}
+% \changes{v1.4}{2019/05/04}{Added \texttt{v} symbol.}
+% The (yet) unnamed symbol \metricsymbols*{v}.
+% \begin{macrocode}
+\cs_new:Npn \@@_v_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) -- (0.225,-0.225) -- (0.45,0);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_A_mark:}
+% \changes{v1.4}{2019/05/04}{Added \texttt{A} symbol.}
+% The (yet) unnamed symbol \metricsymbols*{A}.
+% \begin{macrocode}
+\cs_new:Npn \@@_A_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) -- (0.225,0.225) -- (0.45,0);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_o_mark:}
+% \changes{v1.4}{2019/05/04}{Added \texttt{o} symbol.}
+% The (yet) unnamed symbol \metricsymbols*{o}.
+% \begin{macrocode}
+\cs_new:Npn \@@_o_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) circle [radius=0.2];
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal,added=2019/05/04]{\@@_oo_mark:}
+% The aeolic symbol \metricsymbols*{oo}.
+% \begin{macrocode}
+\cs_new:Npn \@@_oo_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) circle [radius=0.2];
+ \draw ($(0.4,0)+(1\pgflinewidth,0)+(\usemetrixvar{gap},0)$) circle [radius=0.2];
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal,updated=2014/07/02]{\@@_u__mark:}
+% \changes{v1.1}{2014/07/02}{Removed red dot.}
+% The indifferent symbol \MakePrivateLetters\metricsymbols*{u_}.
+% \begin{macrocode}
+\cs_new:Npn \@@_u__mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) arc [start~angle=0, end~angle=180, radius=-0.2];
+ \draw ($(0,-0.2)+(-0.5\pgflinewidth,-\pgflinewidth)-(0,\usemetrixvar{gap})$) --
+ ($(0.4,-0.2)+(0.5\pgflinewidth,-\pgflinewidth)
+ +(0,-\usemetrixvar{gap})$);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_n_mark:}
+% An alternative indifferent symbol \metricsymbols*{n}.
+% \begin{macrocode}
+\cs_new:Npn \@@_n_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) arc [start~angle=0, end~angle=180, radius=0.225];
+ \fill (-0.225,0.75*\usemetrixvar{symbollinewidth})
+ circle [radius=0.7\pgflinewidth];
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_p_mark:}
+% \changes{v1.4}{2019/05/04}{Added primary stress symbol.}
+% The primary stress symbol \metricsymbols*{p}.
+% \begin{macrocode}
+\cs_new:Npn \@@_p_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (-0.2,-0.2) -- (0.2,0.2);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_s_mark:}
+% \changes{v1.4}{2019/05/04}{Added secondary stress symbol.}
+% The secondary stress symbol \metricsymbols*{s}.
+% \begin{macrocode}
+\cs_new:Npn \@@_s_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (-0.2,0.2) -- (0.2,-0.2);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_l_mark:}
+% The simple break symbol \metricsymbols*{|} (above syllables).
+% \begin{macrocode}
+\cs_new:Npn \@@_l_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) -- (0,0.5);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_ll_mark:}
+% The verse break symbol \metricsymbols*{||} (above syllables).
+% \begin{macrocode}
+\cs_new:Npn \@@_ll_mark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) -- (0,0.5);
+ \draw ($(\pgflinewidth,0)+(1.5*\usemetrixvar{gap},0)$) -- ++(0,0.5);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_l_bigmark:}
+% The simple break symbol \metricsymbols*{|} (stand alone version).
+% \begin{macrocode}
+\cs_new:Npn \@@_l_bigmark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) -- (0,0.8);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_ll_bigmark:}
+% The verse break symbol \metricsymbols*{||} (stand alone version).
+% \begin{macrocode}
+\cs_new:Npn \@@_ll_bigmark:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0) -- (0,0.8);
+ \draw ($(\pgflinewidth,0)+(1.5*\usemetrixvar{gap},0)$) -- ++(0,0.8);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal,updated=2014/07/02]{\@@_l_break}
+% \changes{v1.1}{2014/07/02}{Made line slightly longer}
+% The simple break symbol \metricsymbols*{|} (between syllables with symbols).
+% \begin{macrocode}
+\cs_new:Npn \@@_l_break:
+ {
+ \begin{tikzpicture}[every~metrix~symbol,baseline=0.05em]
+ \draw (0,\usemetrixvar{symbolshift}+0.325em)
+ -- (0,-0.05em) -- (0,0.8em) -- (0,\usemetrixvar{symbolshift});
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal,updated=2014/07/02]{\@@_ll_break}
+% \changes{v1.1}{2014/07/02}{Made lines slightly longer}
+% The verse break symbol \metricsymbols*{||} (between syllables with symbols).
+% \begin{macrocode}
+\cs_new:Npn \@@_ll_break:
+ {
+ \begin{tikzpicture}[every~metrix~symbol,baseline=0.05em]
+ \draw (0,\usemetrixvar{symbolshift}+0.325em)
+ -- (0,-0.05em) -- (0,0.8em) -- (0,\usemetrixvar{symbolshift});
+ \draw
+ [
+ shift={($(\pgflinewidth,0)+(1.5*\usemetrixvar{gap},0)$)},
+ ]
+ (0,\usemetrixvar{symbolshift}+0.325em) -- (0,-0.05em) -- (0,0.8em)
+ -- (0,\usemetrixvar{symbolshift});
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_short_break:}
+% The shorter break symbol.
+% \begin{macrocode}
+\cs_new:Npn \@@_short_break:
+ {
+ \begin{tikzpicture}[every~metrix~symbol]
+ \draw (0,0.3) -- (0,-0.3);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_foot_break:}
+% The shorter break symbol for foot breakt is the same as
+% the regular short break.
+% \begin{macrocode}
+\cs_set_eq:NN \@@_foot_break: \@@_short_break:
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{User level macros}
+%
+% \begin{macro}{\setmetrixvar}
+% This macro saves the value to an internal variable.
+% \begin{macrocode}
+\NewDocumentCommand{ \setmetrixvar }{ m m }
+ {
+ \tl_if_exist:cTF { g_@@_variable_#1_tl } {
+ \tl_set:cn { g_@@_variable_#1_tl } { #2 }
+ }
+ {
+ \@@_error_msg:n { Unknown~variable~'#1'. }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\usemetrixvar}
+% With this command one can access the value of an internal variable.\footnote{Marco Daniel
+% showed me this hint at \url{http://tex.stackexchange.com/q/124600/4918}.}
+% \begin{macrocode}
+\DeclareExpandableDocumentCommand{ \usemetrixvar }{ m }
+ {
+ \tl_if_exist:cTF { g_@@_variable_#1_tl } {
+ \tl_use:c { g_@@_variable_#1_tl }
+ }
+ {
+ \@@_error_msg:n { Unknown~variable~'#1'. }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\metrics}
+% This user macro calls \cs{\@@_metrics} to typset syllables with symbols.
+% \begin{macrocode}
+\NewDocumentCommand { \metrics } { O{} m m }
+ {
+ \@@_evaluate_higlights:n { #1 }
+ \@@_metrics:nn { #2 } { #3 }
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\metricsymbols}
+% This command typesets stand alone symbols. The starred version prints smaller versions.
+% \begin{macrocode}
+\NewDocumentCommand { \metricsymbols } { s O{} m }
+ {
+ \group_begin:
+ \IfBooleanF { #1 } { \tikzset{every~metrix~symbol/.style={every~metrix~big~symbol}} }
+ \@@_evaluate_higlights:n { #2 }
+ \@@_metricsymbols:n { #3 }
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[updated=2015/09/02]{\lng}
+% \changes{v1.2}{2015/09/02}{Finetunig for \protect\cs{lng}.}
+% This macro prints the longa accent above its argument.
+% \begin{macrocode}
+\NewDocumentCommand { \lng } { D(){0,0} O{0pt} m O{0pt} }
+ {
+ \begin{tikzpicture}[
+ baseline = (l_@@_syllable_node_\int_use:N \l_@@_process_int.base),
+ every~metrix~accent
+ ]
+ \node [every~metrix~syllable~node]
+ (l_@@_syllable_node_\int_use:N \l_@@_process_int)
+ { #3 };
+ \begin{pgfinterruptboundingbox}
+ \draw [shorten~< = -#2, shorten~> = -#4]
+ ($(l_@@_syllable_node_\int_use:N \l_@@_process_int.north)
+ - (\usemetrixvar{lngminlength}/2,0)
+ +(\usemetrixvar{accentxshift},\usemetrixvar{lngshift})
+ + (\tl_use:N \l_@@_internal_itcorrection_tl,0)
+ + (#1)$)
+ --
+ ($(l_@@_syllable_node_\int_use:N \l_@@_process_int.north)
+ + (\usemetrixvar{lngminlength}/2,0)
+ +(\usemetrixvar{accentxshift},\usemetrixvar{lngshift})
+ + (\tl_use:N \l_@@_internal_itcorrection_tl,0)
+ + (#1)$)
+ ;
+ \draw [shorten~< = -#2, shorten~> = -#4]
+ ($(l_@@_syllable_node_\int_use:N \l_@@_process_int.north~west)
+ +(\usemetrixvar{lngshortening}+\usemetrixvar{accentxshift},\usemetrixvar{lngshift})
+ + (\tl_use:N \l_@@_internal_itcorrection_tl,0)
+ + (#1)$)
+ --
+ ($(l_@@_syllable_node_\int_use:N \l_@@_process_int.north~east)
+ +(-\usemetrixvar{lngshortening}+\usemetrixvar{accentxshift},\usemetrixvar{lngshift})
+ + (\tl_use:N \l_@@_internal_itcorrection_tl,0)
+ + (#1)$)
+ ;
+ \end{pgfinterruptboundingbox}
+ \end{tikzpicture}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[updated=2015/09/02]{\brv}
+% \changes{v1.2}{2015/09/02}{Finetunig for \protect\cs{brv}.}
+% This macro prints the brevis accent above its argument.
+% \begin{macrocode}
+\NewDocumentCommand { \brv } { D(){0,0} m }
+ {
+ \begin{tikzpicture}[
+ baseline = (l_@@_syllable_node_\int_use:N \l_@@_process_int.base),
+ every~metrix~accent
+ ]
+ \node [every~metrix~syllable~node]
+ (l_@@_syllable_node_\int_use:N \l_@@_process_int)
+ { #2 };
+ \begin{pgfinterruptboundingbox}
+ \draw ($(l_@@_syllable_node_\int_use:N \l_@@_process_int.north)
+ + (-0.15,0)
+ + (\usemetrixvar{accentxshift},\usemetrixvar{brvshift})
+ + (\tl_use:N \l_@@_internal_itcorrection_tl,0)
+ + (#1)$)
+ arc [start~angle=0, end~angle=180, radius=-0.15];
+ \end{pgfinterruptboundingbox}
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[updated=2015/09/02]{\acct}
+% \changes{v1.2}{2015/09/02}{Finetunig for \protect\cs{acct}.}
+% This macro prints the dot accent below its argument.
+% \begin{macrocode}
+\NewDocumentCommand { \acct } { D(){0,0} m }
+ {
+ \begin{tikzpicture}[
+ baseline = (l_@@_syllable_node_\int_use:N \l_@@_process_int.base),
+ every~metrix~accent
+ ]
+ \node [every~metrix~syllable~node]
+ (l_@@_syllable_node_\int_use:N \l_@@_process_int)
+ { #2 };
+ \begin{pgfinterruptboundingbox}
+ \fill ($(l_@@_syllable_node_\int_use:N \l_@@_process_int.south)
+ + (0,\usemetrixvar{dotshift})
+ + (#1)$)
+ circle [radius=1.25\pgflinewidth];
+ \end{pgfinterruptboundingbox}
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[updated=2015/09/02]{\bow}
+% \changes{v1.2}{2015/09/02}{Finetunig for \protect\cs{bow}.}
+% This macro prints the bow below it's argument.
+% \begin{macrocode}
+\NewDocumentCommand { \bow } { O{0pt} m O{0pt} }
+ {
+ \begin{tikzpicture}[
+ baseline = (l_@@_syllable_node_\int_use:N \l_@@_process_int.base),
+ every~metrix~bow
+ ]
+ \node [every~metrix~syllable~node]
+ (l_@@_syllable_node_\int_use:N \l_@@_process_int)
+ { #2 };
+ \draw [shorten~< = #1, shorten~> = #3]
+ ($(l_@@_syllable_node_\int_use:N \l_@@_process_int.base~west)+
+ (\usemetrixvar{bowshortening},\usemetrixvar{bowshift})$)
+ to [out=-45, in=225,looseness=\usemetrixvar{bowlooseness}]
+ ($(l_@@_syllable_node_\int_use:N \l_@@_process_int.base~east)+
+ (-\usemetrixvar{bowshortening},\usemetrixvar{bowshift})$);
+ \end{tikzpicture}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{\TikZ/ styles}
+% The \metrix/ package uses several \TikZ/ sytles to draw the macros.
+% \begin{macrocode}
+\ExplSyntaxOff
+\tikzset {
+ every metrix symbol/.style={
+ line width=\usemetrixvar{symbollinewidth},
+ color=\usemetrixvar{symbolcolor},
+ x=\usemetrixvar{baseunit},y=\usemetrixvar{baseunit},
+ },
+ every metrix big symbol/.style={
+ line width=\usemetrixvar{bigsymbollinewidth},
+ color=\usemetrixvar{symbolcolor},
+ x=\usemetrixvar{bigbaseunit},y=\usemetrixvar{bigbaseunit},
+ },
+ every metrix symbol node/.style={
+ inner sep=0pt, anchor=center,
+ },
+ every metrix ictus node/.style={
+ overlay,
+ },
+ every metrix break node/.style={
+ inner sep=0pt, anchor=base,
+ },
+ every metrix syllable node/.style={
+ inner sep=0pt, anchor=base,
+ },
+ every metrix bow/.style={
+ line width=\usemetrixvar{bowlinewidth},
+ color=\usemetrixvar{bowcolor},
+ x=\usemetrixvar{baseunit},y=\usemetrixvar{baseunit},
+ },
+ every metrix accent/.style={
+ line width=\usemetrixvar{accentlinewidth},
+ color=\usemetrixvar{accentcolor},
+ x=\usemetrixvar{baseunit},y=\usemetrixvar{baseunit},
+ },
+ bold highlight/.style={
+ every metrix symbol/.append style={line width=2\pgflinewidth},
+ every metrix syllable node/.append style={font=\bfseries},
+ every superscript node/.append style={font/.expand once=\tikz@textfont\bfseries},
+ },
+ colored highlight/.style={
+ every metrix symbol/.append style={draw=#1},
+ every metrix syllable node/.append style={text=#1},
+ every superscript node/.append style={text=#1},
+ },
+ colored highlight/.default={
+ \usemetrixvar{highlightcolor}
+ },
+ dashed highlight/.style={
+ every metrix symbol/.append style={dash pattern=on 1pt off 0.4pt},
+ },
+ filled highlight/.style={
+ every metrix symbol node/.append style={inner sep=2pt,fill=#1},
+ },
+ filled highlight/.default={
+ \usemetrixvar{fillcolor},
+ },
+ every superscript picture/.style={
+ baseline=-3ex,
+ },
+ every superscript node/.style={
+ inner sep=0pt,
+ font=\scriptsize,
+ },
+ every superscript label/.style={
+ inner xsep=0pt,
+ inner ysep=-3ex,
+ label distance=0.5pt,
+ },
+ add superscript/.style={
+ label={[every superscript label]right:{%
+ \tikz[every superscript picture]\node at (0,0) [every superscript node] {#1};%
+ }},
+ },
+ superscript/.style={
+ every metrix symbol node/.append style={
+ add superscript=#1,
+ },
+ every metrix break node/.append style={
+ add superscript=#1,
+ },
+ },
+ superscript/.value required,
+ add arrow/.style={
+ every metrix symbol node/.append style={
+ label=90:\usemetrixvar{arrow},
+ },
+ },
+ add text/.style={
+ every metrix symbol node/.append style={
+ label={[every metrix added text]#1},
+ },
+ },
+ every metrix added text/.style = {
+ font = \scriptsize\itshape,
+ },
+ add text/.value required,
+}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% \subsection{Environments}
+% \begin{macro}{symbolline}
+% Environment to display stand alone symbols.
+% \begin{macrocode}
+\NewDocumentEnvironment{symbolline} { }
+ {
+ \par\addvspace{\baselineskip}
+ \centering
+ }
+ {
+ \par\vspace{\baselineskip}
+ \noindent\ignorespacesafterend
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}[internal]{\@@_print_vers_ref:n}
+% The internal macro to print the verse reference inside of +{metricvers}+
+% \begin{macrocode}
+\cs_new:Npn \@@_print_vers_ref:n #1
+ {
+ \hspace*{\fill}\nolinebreak[1] \quad \hspace*{\fill} \mbox{\footnotesize #1}
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{metricverses,\verseref}
+% Environment to display a verse with metric symbols and a source. And a macro to print
+% a right aligned reference.
+% \begin{macrocode}
+\NewDocumentCommand { \verseref } { m }
+ {
+ \@@_error_msg:n {
+ \string\verseref\space can~only~be~used~in~{metricverses}~env.
+ }
+ }
+\NewDocumentEnvironment { metricverses } { }
+ {
+ \RenewDocumentCommand { \verseref } { m }
+ {
+ \@@_print_vers_ref:n { ##1 }
+ }
+ \par
+ \addvspace { 0.7\baselineskip }
+ \fp_compare:nT { \usemetrixvar { symbolshift } < 0.0 }
+ {
+ \vspace { \usemetrixvar { symbolshift } }
+ }
+ \addtolength { \baselineskip } { 0.6\baselineskip }
+ }
+ {
+ \par
+ \addtolength { \baselineskip } { -0.6\baselineskip }
+ \vspace { \baselineskip }
+ \noindent \ignorespacesafterend
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintChanges^^A use makeindex -s gglo.ist -o metrix-doc.gls metrix-doc.glo
+% ^^A use updated=YYYY-MM-DD or new=YYY-MM-DD in {documentation} section
+% \changes{v1.0}{2013/08/12}{Initial version}
+% \changes{v1.2a}{2016/01/21}{Replaced deprecated \cs{prop_get} variants (Thanks to J. Wright).}
+% \changes{v1.3}{2016/03/21}{New highlight styles: \texttt{add text} and \texttt{add arrow}.}
+% \changes{v1.4}{2019/05/04}{Added docs for \texttt{l} and \texttt{ll} symbol.}
+% \changes{v1.4}{2019/05/05}{Added possibility to add accents/icutus above symbols.}
+% \changes{v1.4a}{2019/05/13}{Now loads \pkg{textcomp}.}
+% \changes{v1.4a}{2019/05/13}{Fix: Icuts/accents didn't work with unicode.}
+% \changes{v1.4a}{2019/05/13}{New style: \texttt{every metrix ictus node}}
+%
+% \PrintIndex^^A use: makeindex -s l3doc.ist -o metrix-doc.ind metrix-doc.idx \ No newline at end of file
diff --git a/macros/latex/contrib/metrix/metrix.ins b/macros/latex/contrib/metrix/metrix.ins
new file mode 100644
index 0000000000..55350a84de
--- /dev/null
+++ b/macros/latex/contrib/metrix/metrix.ins
@@ -0,0 +1,35 @@
+\iffalse meta-comment
+
+File metrix.ins Copyright (c) Tobias Weh
+
+This file may be distributed and/or modified under the conditions of the
+LaTeX Project Public License (LPPL), either version 1.3c of this
+license or (at your option) any later version. The latest version
+of this license is in the file
+
+ http://www.latex-project.org/lppl.txt
+
+\fi
+
+\input l3docstrip.tex
+\askforoverwritefalse
+
+%\preamble
+%
+%EXPERIMENTAL CODE
+%
+%Do not distribute this file without also distributing the
+%source files specified above.
+%
+%Do not distribute a modified version of this file.
+%
+%\endpreamble
+%% stop docstrip adding \endinput
+%\postamble
+%\endpostamble
+
+\keepsilent
+
+\generate{\file{metrix.sty} {\from{metrix.dtx} {package}}}
+
+\endbatchfile \ No newline at end of file
diff --git a/macros/latex/contrib/metrix/metrix.pdf b/macros/latex/contrib/metrix/metrix.pdf
new file mode 100644
index 0000000000..51322393d3
--- /dev/null
+++ b/macros/latex/contrib/metrix/metrix.pdf
Binary files differ