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/tex/latex/metrix/metrix.sty | 133 +++++++++++++++++++++----- 1 file changed, 107 insertions(+), 26 deletions(-) (limited to 'Master/texmf-dist/tex/latex/metrix') 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