From 5623abb74e370058ba885a4863c704d085cc7adf Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 21 Mar 2016 20:46:28 +0000 Subject: metrix (21mar16) git-svn-id: svn://tug.org/texlive/trunk@40099 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/metrix/metrix.pdf | Bin 507528 -> 517396 bytes Master/texmf-dist/source/latex/metrix/metrix.dtx | 220 +++++++++++++++++++---- Master/texmf-dist/tex/latex/metrix/metrix.sty | 133 +++++++++++--- 3 files changed, 290 insertions(+), 63 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/metrix/metrix.pdf b/Master/texmf-dist/doc/latex/metrix/metrix.pdf index b92204b8d91..f549456846a 100644 Binary files a/Master/texmf-dist/doc/latex/metrix/metrix.pdf and b/Master/texmf-dist/doc/latex/metrix/metrix.pdf differ diff --git a/Master/texmf-dist/source/latex/metrix/metrix.dtx b/Master/texmf-dist/source/latex/metrix/metrix.dtx index bc9def105ce..09ad4f820f2 100644 --- a/Master/texmf-dist/source/latex/metrix/metrix.dtx +++ b/Master/texmf-dist/source/latex/metrix/metrix.dtx @@ -27,8 +27,8 @@ % } \def\metrixFileName{metrix} \def\metrixFileDescription{Typset prosody/metric symbols.} -\def\metrixFileDate{2016/01/21} -\def\metrixFileVersion{1.2a} +\def\metrixFileDate{2016/03/21} +\def\metrixFileVersion{1.3} % %<*driver> \documentclass[full,english]{l3doc} @@ -71,6 +71,8 @@ \usepackage[scale=0.875]{tgheros} \usepackage{ascii} +\edef\pluschar{+} + \AtBeginDocument{ \DeleteShortVerb{\|} \DeleteShortVerb{\"} @@ -168,7 +170,7 @@ % \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 fo that the examples in this manual +% 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 +;-)+. % @@ -201,7 +203,9 @@ % +oo+ & two lowercase o's & \metricsymbols{oo} & aeolic base \\ % +|+ & pipe & \metricsymbols{|} & break (see \ref{sec:breaks}) \\ % +||+ & two pipes & \metricsymbols{||} & verse break (see \ref{sec:breaks}) \\ -% +'+ & apostrophe & \metricsymbols{'} & shorter break (see \ref{sec:breaks}) \\ +% +'+ & apostrophe (shift\,\pluschar\,\#) & \metricsymbols{'} & +% shorter break (see \ref{sec:breaks}) \\ +% +,+ & comma & \metricsymbols{,} & shorter break (see \ref{sec:breaks}) \\ % \bottomrule % \end{tabu} % \end{table} @@ -277,8 +281,8 @@ % {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, i.e. +'+. -% This mark must be used in \meta{symbols} only and is kind of special: +% 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, @@ -294,6 +298,26 @@ % \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 @@ -307,6 +331,23 @@ % \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 variable \verb+metrix+. +% +% \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 @@ -403,7 +444,7 @@ % \metricsymbols[6={superscript=5},10={colored highlight,superscript=bD}] % {_ _uu _ _uu _ | _uu _ _uu || _ uu _ u_} % \end{verbatim} -% \metricsymbols[6={superscript=5},10={bold highlight,superscript=bD}] +% \metricsymbols[6={superscript=5},10={colored highlight,superscript=bD}] % {_ _uu _ _uu _ | _uu _ _uu || _ uu _ u_} % \end{example} % @@ -870,6 +911,8 @@ % \rowfont{\bfseries\sffamily} variable & default & explanation \\ % \midrule % \endfirsthead +% \caption{Variables (cont.)}\\ +% \toprule % \rowfont{\bfseries\sffamily} variable & default & explanation \\ % \midrule % \endhead @@ -908,6 +951,7 @@ % 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+) \\ % \end{longtabu} @@ -937,6 +981,9 @@ % \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} % @@ -1141,6 +1188,15 @@ \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} @@ -1173,10 +1229,11 @@ \seq_new:N \l_@@_symbols_seq % \end{macrocode} % \end{variable} -% \begin{variable}[internal]{\l_@@_symbols_seq} -% This list stores the short breaks of \cs{metrics}. +% \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} @@ -1229,6 +1286,7 @@ % \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 @@ -1253,18 +1311,24 @@ % \begin{macrocode} \seq_set_split:Nnx \l_@@_symbols_seq { ~ } { \tl_trim_spaces:n { #1 } } % \end{macrocode} -% Search for the short breaks and remove them afterwards. +% 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 + \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} @@ -1339,6 +1403,31 @@ } } } +% \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. @@ -1376,6 +1465,12 @@ } \str_case:nnF { ##1 } { + { , } + { + \@@_break_gap: + \@@_align_symbol:n { \@@_l_bigmark: } + \@@_break_gap: + } { ' } { \@@_break_gap: @@ -1439,14 +1534,21 @@ \begin{tikzpicture} [ remember~picture, - baseline=(l_@@_syllable_node.base), + baseline=(l_@@_syllable_node_\int_use:N \l_@@_process_int.base), ] - \node [every~metrix~syllable~node] (l_@@_syllable_node) {#1}; + \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.base)+(0,\usemetrixvar{symbolshift}) - +(\tl_use:N \l_@@_internal_itcorrection_tl,0)$) + 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} @@ -1484,7 +1586,7 @@ { \PackageError{ \metrixFileName } { #1 } { - Please take a look at the manual or send an email. + Please~take~a~look~at~the~manual~or~send~an~email. } } % \end{macrocode} @@ -1521,7 +1623,7 @@ % \end{macrocode} % \end{macro} % \begin{macro}[internal]{\@@_break_gap:} -% This macro typsets the gap around the two break symbols. +% This macro typesets the gap around the two break symbols. % \begin{macrocode} \cs_new_protected:Npn \@@_break_gap: { @@ -1560,7 +1662,7 @@ % \end{macrocode} % \end{macro} % \begin{macro}[internal]{\@@_evaluate_higlights:N} -% This macro typsets the gap around the two break symbols. +% This macro evaluates and prints the highlighting options. % \begin{macrocode} \cs_new_protected:Npn \@@_evaluate_higlights:n #1 { @@ -1885,7 +1987,7 @@ } % \end{macrocode} % \end{macro} -% \begin{macro}[internal,added=2014/07/02]{\@@_short_break:} +% \begin{macro}[internal]{\@@_short_break:} % The shorter break symbol. % \begin{macrocode} \cs_new:Npn \@@_short_break: @@ -1896,6 +1998,13 @@ } % \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} % @@ -1957,29 +2066,34 @@ % \begin{macrocode} \NewDocumentCommand { \lng } { D(){0,0} O{0pt} m O{0pt} } { - \begin{tikzpicture}[baseline=(l_@@_syllable_node.base),every~metrix~accent] - \node [every~metrix~syllable~node] (l_@@_syllable_node) {#3}; + \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.north) + ($(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.north) + ($(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.north~west) + ($(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.north~east) + ($(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)$) @@ -1995,10 +2109,16 @@ % \begin{macrocode} \NewDocumentCommand { \brv } { D(){0,0} m } { - \begin{tikzpicture}[baseline=(l_@@_syllable_node.base),every~metrix~accent] - \node [every~metrix~syllable~node] (l_@@_syllable_node) {#2}; + \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.north)+(-0.15,0) + \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)$) @@ -2014,10 +2134,15 @@ % \begin{macrocode} \NewDocumentCommand { \acct } { D(){0,0} m } { - \begin{tikzpicture}[baseline=(l_@@_syllable_node.base),every~metrix~accent] - \node [every~metrix~syllable~node] (l_@@_syllable_node) {#2}; + \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.south) + \fill ($(l_@@_syllable_node_\int_use:N \l_@@_process_int.south) + (0,\usemetrixvar{dotshift}) + (#1)$) circle [radius=1.25\pgflinewidth]; @@ -2032,12 +2157,18 @@ % \begin{macrocode} \NewDocumentCommand { \bow } { O{0pt} m O{0pt} } { - \begin{tikzpicture}[baseline=(l_@@_syllable_node.base),every~metrix~bow] - \node [every~metrix~syllable~node] (l_@@_syllable_node) {#2}; + \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.base~west)+ + ($(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.base~east)+ + 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} } @@ -2126,6 +2257,20 @@ }, }, 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} @@ -2197,5 +2342,6 @@ % ^^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}} % % \PrintIndex^^A use: makeindex -s l3doc.ist -o metrix-doc.ind metrix-doc.idx \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/metrix/metrix.sty b/Master/texmf-dist/tex/latex/metrix/metrix.sty index 593e6da8982..b6923b854cf 100644 --- a/Master/texmf-dist/tex/latex/metrix/metrix.sty +++ b/Master/texmf-dist/tex/latex/metrix/metrix.sty @@ -44,8 +44,8 @@ } \def\metrixFileName{metrix} \def\metrixFileDescription{Typset prosody/metric symbols.} -\def\metrixFileDate{2016/01/21} -\def\metrixFileVersion{1.2a} +\def\metrixFileDate{2016/03/21} +\def\metrixFileVersion{1.3} \ProvidesExplPackage {\metrixFileName}{\metrixFileDate}{\metrixFileVersion}{\metrixFileDescription} \RequirePackage{xparse} @@ -106,6 +106,8 @@ \tl_set:Nn \g__metrix_variable_highlightcolor_tl { red } \tl_new:N \g__metrix_variable_fillcolor_tl \tl_set:Nn \g__metrix_variable_fillcolor_tl { yellow } +\tl_new:N \g__metrix_variable_arrow_tl +\tl_set:Nn \g__metrix_variable_arrow_tl { $\downarrow$ } \tl_new:N \g__metrix_variable_breakgap_tl \tl_set:Nn \g__metrix_variable_breakgap_tl { 0.6em } \tl_new:N \g__metrix_variable_emptywidth_tl @@ -114,6 +116,7 @@ \seq_new:N \l__metrix_syllables_seq \seq_new:N \l__metrix_symbols_seq \seq_new:N \l__metrix_short_breaks_seq +\seq_new:N \l__metrix_foot_breaks_seq \prop_new:N \l__metrix_highlights_prop \seq_new:N \l__metrix_highlight_seq \seq_new:N \l__metrix_highlight_pos_seq @@ -135,14 +138,20 @@ \seq_set_split:Nnx \l__metrix_symbols_seq { ~ } { \tl_trim_spaces:n { #1 } } \int_zero:N \l__metrix_process_int \seq_clear:N \l__metrix_short_breaks_seq + \seq_clear:N \l__metrix_foot_breaks_seq \seq_map_inline:Nn \l__metrix_symbols_seq { \int_incr:N \l__metrix_process_int \tl_if_eq:nnT { ##1 } { ' } { - \seq_put_right:Nx \l__metrix_short_breaks_seq { \int_use:N \l__metrix_process_int } - \int_decr:N \l__metrix_process_int + \seq_put_right:Nx \l__metrix_short_breaks_seq { \int_use:N \l__metrix_process_int } + \int_decr:N \l__metrix_process_int + } + \tl_if_eq:nnT { ##1 } { , } { + \seq_put_right:Nx \l__metrix_foot_breaks_seq { \int_use:N \l__metrix_process_int } + \int_decr:N \l__metrix_process_int + } } + \seq_remove_all:Nn \l__metrix_symbols_seq { , } \seq_remove_all:Nn \l__metrix_symbols_seq { ' } -} \int_zero:N \l__metrix_process_int \seq_map_inline:Nn \l__metrix_syllables_seq { @@ -200,6 +209,28 @@ } } } + \seq_if_empty:NF \l__metrix_foot_breaks_seq { + \seq_map_inline:Nn \l__metrix_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__metrix_symbols_seq = \l_tmpa_int } + } { + \tikz [remember~picture, overlay] { + \coordinate (l__metrix_tmp_coord) at + ($(l__metrix_syllable_node_\int_use:N \l_tmpa_int.east)! + 0.5!(l__metrix_syllable_node_##1.west)$); + \node [every~metrix~symbol~node] at + ($(l__metrix_symbol_node_\int_use:N \l_tmpa_int.east)! + (l__metrix_tmp_coord)!(l__metrix_symbol_node_##1.west)$) + { \__metrix_foot_break: }; + } + } + } + } } { \__metrix_error_msg:n @@ -226,6 +257,12 @@ } \str_case:nnF { ##1 } { + { , } + { + \__metrix_break_gap: + \__metrix_align_symbol:n { \__metrix_l_bigmark: } + \__metrix_break_gap: + } { ' } { \__metrix_break_gap: @@ -272,14 +309,21 @@ \begin{tikzpicture} [ remember~picture, - baseline=(l__metrix_syllable_node.base), + baseline=(l__metrix_syllable_node_\int_use:N \l__metrix_process_int.base), ] - \node [every~metrix~syllable~node] (l__metrix_syllable_node) {#1}; + \node [every~metrix~syllable~node] + (l__metrix_syllable_node_\int_use:N \l__metrix_process_int) + { #1 }; \begin{pgfinterruptboundingbox} \node [every~metrix~symbol~node] (l__metrix_symbol_node_\int_use:N \l__metrix_process_int) - at ($(l__metrix_syllable_node.base)+(0,\usemetrixvar{symbolshift}) - +(\tl_use:N \l__metrix_internal_itcorrection_tl,0)$) + at ($ + (l__metrix_syllable_node_\int_use:N \l__metrix_process_int.base) + + + (0,\usemetrixvar{symbolshift}) + + + (\tl_use:N \l__metrix_internal_itcorrection_tl,0) + $) { \box_use:N \l_tmpa_box }; \end{pgfinterruptboundingbox} \end{tikzpicture} @@ -304,7 +348,7 @@ { \PackageError{ \metrixFileName } { #1 } { - Please take a look at the manual or send an email. + Please~take~a~look~at~the~manual~or~send~an~email. } } \cs_new_protected:Npn \__metrix_warning_msg:n #1 @@ -558,6 +602,7 @@ \draw (0,0.3) -- (0,-0.3); \end{tikzpicture} } +\cs_set_eq:NN \__metrix_foot_break: \__metrix_short_break: \NewDocumentCommand{ \setmetrixvar }{ m m } { \tl_if_exist:cTF { g__metrix_variable_#1_tl } { @@ -591,29 +636,34 @@ } \NewDocumentCommand { \lng } { D(){0,0} O{0pt} m O{0pt} } { - \begin{tikzpicture}[baseline=(l__metrix_syllable_node.base),every~metrix~accent] - \node [every~metrix~syllable~node] (l__metrix_syllable_node) {#3}; + \begin{tikzpicture}[ + baseline = (l__metrix_syllable_node_\int_use:N \l__metrix_process_int.base), + every~metrix~accent + ] + \node [every~metrix~syllable~node] + (l__metrix_syllable_node_\int_use:N \l__metrix_process_int) + { #3 }; \begin{pgfinterruptboundingbox} \draw [shorten~< = -#2, shorten~> = -#4] - ($(l__metrix_syllable_node.north) + ($(l__metrix_syllable_node_\int_use:N \l__metrix_process_int.north) - (\usemetrixvar{lngminlength}/2,0) +(\usemetrixvar{accentxshift},\usemetrixvar{lngshift}) + (\tl_use:N \l__metrix_internal_itcorrection_tl,0) + (#1)$) -- - ($(l__metrix_syllable_node.north) + ($(l__metrix_syllable_node_\int_use:N \l__metrix_process_int.north) + (\usemetrixvar{lngminlength}/2,0) +(\usemetrixvar{accentxshift},\usemetrixvar{lngshift}) + (\tl_use:N \l__metrix_internal_itcorrection_tl,0) + (#1)$) ; \draw [shorten~< = -#2, shorten~> = -#4] - ($(l__metrix_syllable_node.north~west) + ($(l__metrix_syllable_node_\int_use:N \l__metrix_process_int.north~west) +(\usemetrixvar{lngshortening}+\usemetrixvar{accentxshift},\usemetrixvar{lngshift}) + (\tl_use:N \l__metrix_internal_itcorrection_tl,0) + (#1)$) -- - ($(l__metrix_syllable_node.north~east) + ($(l__metrix_syllable_node_\int_use:N \l__metrix_process_int.north~east) +(-\usemetrixvar{lngshortening}+\usemetrixvar{accentxshift},\usemetrixvar{lngshift}) + (\tl_use:N \l__metrix_internal_itcorrection_tl,0) + (#1)$) @@ -623,10 +673,16 @@ } \NewDocumentCommand { \brv } { D(){0,0} m } { - \begin{tikzpicture}[baseline=(l__metrix_syllable_node.base),every~metrix~accent] - \node [every~metrix~syllable~node] (l__metrix_syllable_node) {#2}; + \begin{tikzpicture}[ + baseline = (l__metrix_syllable_node_\int_use:N \l__metrix_process_int.base), + every~metrix~accent + ] + \node [every~metrix~syllable~node] + (l__metrix_syllable_node_\int_use:N \l__metrix_process_int) + { #2 }; \begin{pgfinterruptboundingbox} - \draw ($(l__metrix_syllable_node.north)+(-0.15,0) + \draw ($(l__metrix_syllable_node_\int_use:N \l__metrix_process_int.north) + + (-0.15,0) + (\usemetrixvar{accentxshift},\usemetrixvar{brvshift}) + (\tl_use:N \l__metrix_internal_itcorrection_tl,0) + (#1)$) @@ -636,10 +692,15 @@ } \NewDocumentCommand { \acct } { D(){0,0} m } { - \begin{tikzpicture}[baseline=(l__metrix_syllable_node.base),every~metrix~accent] - \node [every~metrix~syllable~node] (l__metrix_syllable_node) {#2}; + \begin{tikzpicture}[ + baseline = (l__metrix_syllable_node_\int_use:N \l__metrix_process_int.base), + every~metrix~accent + ] + \node [every~metrix~syllable~node] + (l__metrix_syllable_node_\int_use:N \l__metrix_process_int) + { #2 }; \begin{pgfinterruptboundingbox} - \fill ($(l__metrix_syllable_node.south) + \fill ($(l__metrix_syllable_node_\int_use:N \l__metrix_process_int.south) + (0,\usemetrixvar{dotshift}) + (#1)$) circle [radius=1.25\pgflinewidth]; @@ -648,12 +709,18 @@ } \NewDocumentCommand { \bow } { O{0pt} m O{0pt} } { - \begin{tikzpicture}[baseline=(l__metrix_syllable_node.base),every~metrix~bow] - \node [every~metrix~syllable~node] (l__metrix_syllable_node) {#2}; + \begin{tikzpicture}[ + baseline = (l__metrix_syllable_node_\int_use:N \l__metrix_process_int.base), + every~metrix~bow + ] + \node [every~metrix~syllable~node] + (l__metrix_syllable_node_\int_use:N \l__metrix_process_int) + { #2 }; \draw [shorten~< = #1, shorten~> = #3] - ($(l__metrix_syllable_node.base~west)+ + ($(l__metrix_syllable_node_\int_use:N \l__metrix_process_int.base~west)+ (\usemetrixvar{bowshortening},\usemetrixvar{bowshift})$) - to [out=-45, in=225,looseness=\usemetrixvar{bowlooseness}] ($(l__metrix_syllable_node.base~east)+ + to [out=-45, in=225,looseness=\usemetrixvar{bowlooseness}] + ($(l__metrix_syllable_node_\int_use:N \l__metrix_process_int.base~east)+ (-\usemetrixvar{bowshortening},\usemetrixvar{bowshift})$); \end{tikzpicture} } @@ -736,6 +803,20 @@ }, }, 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 \NewDocumentEnvironment{symbolline} { } -- cgit v1.2.3