From 5ee2820646bde78899018d0bfc3e10e1ce347ff6 Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Thu, 25 Feb 2016 22:36:44 +0000 Subject: gregorio 4.1.0-rc2 git-svn-id: svn://tug.org/texlive/trunk@39858 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/README | 2 +- Build/source/texk/gregorio/ChangeLog | 5 + Build/source/texk/gregorio/configure | 24 +-- Build/source/texk/gregorio/configure.ac | 2 +- .../texk/gregorio/gregorio-PATCHES/ChangeLog | 4 + .../texk/gregorio/gregorio-PATCHES/TL-Changes | 4 +- .../texk/gregorio/gregorio-src/.gregorio-version | 2 +- .../source/texk/gregorio/gregorio-src/CHANGELOG.md | 23 ++ .../texk/gregorio/gregorio-src/CONTRIBUTING.md | 2 +- Build/source/texk/gregorio/gregorio-src/UPGRADE.md | 23 +- .../source/texk/gregorio/gregorio-src/configure.ac | 4 +- .../gregorio-src/doc/Command_Index_User.tex | 236 ++++++++++++++------- .../gregorio-src/doc/Command_Index_gregorio.tex | 3 + .../gregorio-src/doc/Command_Index_internal.tex | 123 +++++++++-- .../gregorio-src/doc/GregorioNabcRef-4_1_0-rc1.pdf | Bin 279417 -> 0 bytes .../gregorio-src/doc/GregorioNabcRef-4_1_0-rc2.pdf | Bin 0 -> 279407 bytes .../gregorio-src/doc/GregorioRef-4_1_0-rc1.pdf | Bin 636550 -> 0 bytes .../gregorio-src/doc/GregorioRef-4_1_0-rc2.pdf | Bin 0 -> 647423 bytes .../texk/gregorio/gregorio-src/doc/GregorioRef.tex | 2 +- .../src/gregoriotex/gregoriotex-write.c | 85 +++++--- .../gregorio-src/windows/gregorio-resources.rc | 8 +- Build/source/texk/gregorio/version.ac | 2 +- 22 files changed, 402 insertions(+), 152 deletions(-) delete mode 100644 Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0-rc1.pdf create mode 100644 Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0-rc2.pdf delete mode 100644 Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0-rc1.pdf create mode 100644 Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0-rc2.pdf diff --git a/Build/source/texk/README b/Build/source/texk/README index a6bdb9bb96c..fbd47537c14 100644 --- a/Build/source/texk/README +++ b/Build/source/texk/README @@ -62,7 +62,7 @@ dvipsk - maintained here, by us dvisvgm 1.14.2 - checked 20jan16 http://dvisvgm.bplaced.net/Downloads -gregorio 4.1.0-rc1 - checked 19feb16 +gregorio 4.1.0-rc2 - checked 25feb16 https://github.com/gregorio-project/gregorio/releases/ gsftopk - from Paul Vojta's xdvi? diff --git a/Build/source/texk/gregorio/ChangeLog b/Build/source/texk/gregorio/ChangeLog index a37f264679e..03834364094 100644 --- a/Build/source/texk/gregorio/ChangeLog +++ b/Build/source/texk/gregorio/ChangeLog @@ -1,3 +1,8 @@ +2016-02-25 Akira Kakuto + + Import gregorio-4.1.0-rc2. + * version.ac: Adapted. + 2016-02-19 Akira Kakuto Import gregorio-4.1.0-rc1. diff --git a/Build/source/texk/gregorio/configure b/Build/source/texk/gregorio/configure index 5c167a233c1..ef3614afa86 100755 --- a/Build/source/texk/gregorio/configure +++ b/Build/source/texk/gregorio/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Gregorio (TeX Live) 4.1.0-rc1. +# Generated by GNU Autoconf 2.69 for Gregorio (TeX Live) 4.1.0-rc2. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Gregorio (TeX Live)' PACKAGE_TARNAME='gregorio--tex-live-' -PACKAGE_VERSION='4.1.0-rc1' -PACKAGE_STRING='Gregorio (TeX Live) 4.1.0-rc1' +PACKAGE_VERSION='4.1.0-rc2' +PACKAGE_STRING='Gregorio (TeX Live) 4.1.0-rc2' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1331,7 +1331,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Gregorio (TeX Live) 4.1.0-rc1 to adapt to many kinds of systems. +\`configure' configures Gregorio (TeX Live) 4.1.0-rc2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1402,7 +1402,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Gregorio (TeX Live) 4.1.0-rc1:";; + short | recursive ) echo "Configuration of Gregorio (TeX Live) 4.1.0-rc2:";; esac cat <<\_ACEOF @@ -1521,7 +1521,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Gregorio (TeX Live) configure 4.1.0-rc1 +Gregorio (TeX Live) configure 4.1.0-rc2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2177,7 +2177,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Gregorio (TeX Live) $as_me 4.1.0-rc1, which was +It was created by Gregorio (TeX Live) $as_me 4.1.0-rc2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2526,7 +2526,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -FILENAME_VERSION="4_1_0-rc1" +FILENAME_VERSION="4_1_0-rc2" cat >>confdefs.h <<_ACEOF @@ -7870,7 +7870,7 @@ fi # Define the identity of the package. PACKAGE='gregorio--tex-live-' - VERSION='4.1.0-rc1' + VERSION='4.1.0-rc2' cat >>confdefs.h <<_ACEOF @@ -14254,7 +14254,7 @@ Usage: $0 [OPTIONS] Report bugs to ." lt_cl_version="\ -Gregorio (TeX Live) config.lt 4.1.0-rc1 +Gregorio (TeX Live) config.lt 4.1.0-rc2 configured by $0, generated by GNU Autoconf 2.69. Copyright (C) 2011 Free Software Foundation, Inc. @@ -15841,7 +15841,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Gregorio (TeX Live) $as_me 4.1.0-rc1, which was +This file was extended by Gregorio (TeX Live) $as_me 4.1.0-rc2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15907,7 +15907,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Gregorio (TeX Live) config.status 4.1.0-rc1 +Gregorio (TeX Live) config.status 4.1.0-rc2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/texk/gregorio/configure.ac b/Build/source/texk/gregorio/configure.ac index a8b08c6ee6d..f89a4d1c6f6 100644 --- a/Build/source/texk/gregorio/configure.ac +++ b/Build/source/texk/gregorio/configure.ac @@ -9,7 +9,7 @@ dnl with or without modifications, as long as this notice is preserved. dnl m4_include([version.ac])[] dnl define gregorio_version AC_INIT([Gregorio (TeX Live)], gregorio_version, [tex-k@tug.org]) -FILENAME_VERSION="4_1_0-rc1" +FILENAME_VERSION="4_1_0-rc2" AC_SUBST(FILENAME_VERSION) AC_DEFINE_UNQUOTED(FILENAME_VERSION, "$FILENAME_VERSION", [version suitable for file names]) AC_PREREQ([2.65]) diff --git a/Build/source/texk/gregorio/gregorio-PATCHES/ChangeLog b/Build/source/texk/gregorio/gregorio-PATCHES/ChangeLog index a2f4a6e141d..e41dfb3f475 100644 --- a/Build/source/texk/gregorio/gregorio-PATCHES/ChangeLog +++ b/Build/source/texk/gregorio/gregorio-PATCHES/ChangeLog @@ -1,3 +1,7 @@ +2016-02-25 Akira Kakuto + + Import gregorio-4.1.0-rc2. + 2016-02-19 Akira Kakuto Import gregorio-4.1.0-rc1. diff --git a/Build/source/texk/gregorio/gregorio-PATCHES/TL-Changes b/Build/source/texk/gregorio/gregorio-PATCHES/TL-Changes index 2a0e7d400d0..cba71f81b85 100644 --- a/Build/source/texk/gregorio/gregorio-PATCHES/TL-Changes +++ b/Build/source/texk/gregorio/gregorio-PATCHES/TL-Changes @@ -1,5 +1,5 @@ -Changes applied to the gregorio-4.1.0-rc1 tree as obtained from: - https://github.com/gregorio-project/gregorio/releases/tag/v4.1.0-rc1/ +Changes applied to the gregorio-4.1.0-rc2 tree as obtained from: + https://github.com/gregorio-project/gregorio/releases/tag/v4.1.0-rc2/ Remove: Makefile.in diff --git a/Build/source/texk/gregorio/gregorio-src/.gregorio-version b/Build/source/texk/gregorio/gregorio-src/.gregorio-version index 423d25a1291..ad1b4e2ce1a 100644 --- a/Build/source/texk/gregorio/gregorio-src/.gregorio-version +++ b/Build/source/texk/gregorio/gregorio-src/.gregorio-version @@ -1,4 +1,4 @@ -4.1.0-rc1 +4.1.0-rc2 *** Do not modify this file. *** Use VersionManager.py to change the version. diff --git a/Build/source/texk/gregorio/gregorio-src/CHANGELOG.md b/Build/source/texk/gregorio/gregorio-src/CHANGELOG.md index 89ea5efcdfd..2b535080cab 100644 --- a/Build/source/texk/gregorio/gregorio-src/CHANGELOG.md +++ b/Build/source/texk/gregorio/gregorio-src/CHANGELOG.md @@ -5,6 +5,29 @@ As of v3.0.0 this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased][unreleased] +## [4.1.0-rc2] - 2016-02-25 +### Fixed +- Hyphens now shouldn't go right of the staff lines (see [#845](https://github.com/gregorio-project/gregorio/issues/845)). +- Offset limit calculations now function better in both directions for new bar spacing algorithm. +- Bars ending a line are now at a correct (closer) distance from end of line. + +### Changed +- The treatment of syllables with no notes has been reverted when the old spacing algorithm is used. Such syllables are now treated as notes syllables under the old algorithm (as was the case in 4.1.0-beta3 and earlier) and as bar syllables under the new algorithm. +- The names of the spaces around bars have changed, see `gsp-default` or GregorioRef for the new names. It is now possible to tune the spacing of the virgula separately from the divisio minima, and the dominican bar separately from the divisio minor. +- When using the new bar spacing algorithm, it is now possible to assign different spaces to bar in three different cases: inside a syllable, in a separate syllable with text, and in a separate syllable without text (see [#944](https://github.com/gregorio-project/gregorio/issues/944) for request). + +### Added +- It is now possible to turn off rythmic signs (separately or all together) with `\greprintsigns`, see GregorioRef for details (and [#936](https://github.com/gregorio-project/gregorio/issues/936) for request). +- Added `maxbaroffsettextright@nobar` and `maxbaroffsettextleft@nobar` which function identically to the normal version except that they are used then the "bar" is empty (i.e. something like `*()` in gabc). +- Space between the two bars of a divisio finalis is now tunable through `divisiofinalissep`. +- Added `notesonly` argument to `\gresetshiftaftermora` (see [#948](https://github.com/gregorio-project/gregorio/issues/948)). +- Added `maxbaroffsettextright@eol` and `maxbaroffsettextleft@eol` which function identically to the normal version except that they are used then the bar is immediately followed by a manual line break (i.e. something like `test(::z)` in gabc). + +### Known Bugs +- When there is no manual break, the spacing around bars at the end of a line in the new spacing algorithm is not perfect, this should be visible ony in edge cases. If you encounter such a bad spacing, you are advised to force a line break manually. See [#959](https://github.com/gregorio-project/gregorio/issues/959). +- Above lines text does not move to account for high notes which occur in the same place. As a result the two may overlap. You can work around this by changing `abovelinestextraise` but this is a global setting, affecting the entire score. See [#960](https://github.com/gregorio-project/gregorio/issues/960). +- A manual custos in a low note position will not push down the text associated with it, resulting in the two overlapping. See [#961](https://github.com/gregorio-project/gregorio/issues/961). + ## [4.1.0-rc1] - 2016-02-18 ### Fixed - New bar spacing algorithm now accounts for translations (and other below lyrics stuff). diff --git a/Build/source/texk/gregorio/gregorio-src/CONTRIBUTING.md b/Build/source/texk/gregorio/gregorio-src/CONTRIBUTING.md index 45690814455..4e408f81820 100644 --- a/Build/source/texk/gregorio/gregorio-src/CONTRIBUTING.md +++ b/Build/source/texk/gregorio/gregorio-src/CONTRIBUTING.md @@ -63,7 +63,7 @@ Gregorio provides an [`.editorconfig` file](../.editorconfig), using an [editorc Python files must output no error when inspected by `pylint`. -TeX code must use LuaTeX (more than TeX + eTeX + Omega + PDFTeX) primitives as much as possible, and, when not possible, use code compiling under PlainTeX. All lines inside macro definitions must end with `%` to avoid spurious spaces. To check that no line has been forgotten, please check that `grep -nE '^( |\\(|g|e|x)def)[^%]+$' tex/*.tex tex/*.sty` returns only Lua and metapost code or other lines where `%` is not needed. +TeX code must use LuaTeX (more than TeX + eTeX + Omega + PDFTeX) primitives as much as possible, and, when not possible, use code compiling under PlainTeX. All lines inside macro definitions must end with `%` to avoid spurious spaces. To check that no line has been forgotten, please check that `grep -nE '^(\s|\\(|g|e|x)def)[^%]+$' tex/*.tex tex/*.sty` returns only Lua and metapost code or other lines where `%` is not needed. ### Tests diff --git a/Build/source/texk/gregorio/gregorio-src/UPGRADE.md b/Build/source/texk/gregorio/gregorio-src/UPGRADE.md index e456ccf9956..725ebff3c8a 100644 --- a/Build/source/texk/gregorio/gregorio-src/UPGRADE.md +++ b/Build/source/texk/gregorio/gregorio-src/UPGRADE.md @@ -54,17 +54,24 @@ A new algorithm has been implemented but is turned off by default. We hope this If you do give it a try, please be sure to report any bugs you find. -#### Spaces difference according to presence of text +#### Renaming of spaces -The following spaces have been added: +The spaces around bars are now: -- `spacearoundsmallbartext` - for the space around virgula and divisio minima with text underneath -- `spacearoundminortext` - for the space around divisio minor with text underneath -- `spacearoundmaiortext` - for the space around divisio maior with text underneath -- `spacearoundfinalistext` - for the space around divisio finalis with text underneath -- `spacebeforefinalfinalistext` - for the space before a divisio finalis at the end of a score +- `bar@virgula` +- `bar@minima` (both replacing `spacearoundsmallbars`) +- `bar@minor` (replacing `spacearoundminor`) +- `bar@maior` (replacing `spacearoundmaior`) +- `bar@dominican` (new) -By default, these are sized one half millimeter larger than their "non-text" counterparts. This may cause minor spacing changes in your existing scores. Adjust them as necessary to get the look you want. +They have variants for the new bar spacing algorithm only: + +- `bar@xxx@standalone@text` (where `xxx` is `virgula` or `minima`, etc.) are used when the bar is in a standalone syllable with text +- `bar@xxx@standalone@notext` for bars in a standalone syllable without text + +### Hyphens going right of staff lines + +Hyphens should now not go right of staff lines. If you prefer the old behavior, `\gresethyphenprotrusion{100}` should restore it. ### Oriscus orientation diff --git a/Build/source/texk/gregorio/gregorio-src/configure.ac b/Build/source/texk/gregorio/gregorio-src/configure.ac index 14266bf9c1c..5706d372930 100644 --- a/Build/source/texk/gregorio/gregorio-src/configure.ac +++ b/Build/source/texk/gregorio/gregorio-src/configure.ac @@ -16,8 +16,8 @@ dnl dnl You should have received a copy of the GNU General Public License dnl along with Gregorio. If not, see . -AC_INIT([gregorio],[4.1.0-rc1],[https://github.com/gregorio-project/gregorio/issues],[gregorio],[http://gregorio-project.github.io/]) -FILENAME_VERSION="4_1_0-rc1" +AC_INIT([gregorio],[4.1.0-rc2],[https://github.com/gregorio-project/gregorio/issues],[gregorio],[http://gregorio-project.github.io/]) +FILENAME_VERSION="4_1_0-rc2" AC_SUBST(FILENAME_VERSION) AC_DEFINE_UNQUOTED(FILENAME_VERSION, "$FILENAME_VERSION", [version suitable for file names]) MK="" diff --git a/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_User.tex b/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_User.tex index c8f9983dce0..c56e63e2584 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_User.tex +++ b/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_User.tex @@ -62,12 +62,6 @@ Gregorio\TeX{} two-pass processing is compatible with \texttt{latexmk}. If you only need the special symbols which Gregorio\TeX\ contains, and not the ability to include scores or musical glyphs, then you can load \texttt{gregoriosyms} instead of \texttt{gregoriotex}. It supports all of the above options except those specifically related to scores. \textbf{You should not try to load both packages}. -\subsubsection{Gregorio\TeX\ and \texttt{fontspec}} -Due to recent changes (September 2015) in the \LaTeX\ kernel and the resulting updates to \texttt{fontspec} and Gregorio\TeX, these two packages must now be loaded in order: \texttt{fontspec} first and then \texttt{gregoirotex} (or \texttt{gregoriosyms}). If you attempt to load them the other way around, you will get an error about undefined control sequences and will be unable to compile your document. - -Gregorio\TeX\ does not require \texttt{fontspec}, so documents which do not use \texttt{fontspec} are not affected by these changes. - -\textit{Nota bene:} Some font packages (such as \texttt{libertine}) make use of \texttt{fontspec} internally and thus must also be loaded before \texttt{gregoriotex}. \subsection{Commands} @@ -852,6 +846,17 @@ Macro to determine whether an automatic linebreak before a EUOUAE area is justif & \texttt{ragged} & Automatic line breaks before EUOUAE areas should be ragged\\ \end{argtable} +\textbf{Important:} When set to \texttt{ragged}, Gregorio\TeX{} will require a +second pass (run of \texttt{lualatex} or \texttt{luatex}) to typeset the line +endings correctly. When an additional pass is required, Gregorio\TeX{} will +emit the following warning:\par\medskip + +\begin{scriptsize} +\begin{latexcode} +Module gregoriotex warning: Line heights or variable brace lengths may have changed. Rerun to fix. +\end{latexcode} +\end{scriptsize} + \macroname{\textbackslash gresetbreakineuouae}{\{\#1\}}{gregoriotex-main.tex} Macro to determine whether line breaks are allowed inside a EUOUAE area (delimited by \texttt{} tags in gabc). @@ -920,8 +925,9 @@ Macro to change the behaviour for separation between notes of two syllables when \begin{argtable} \#1 & \texttt{always} & punctum mora are always ignored (default)\\ - & \texttt{barsonly} & punctum mora are ignored before bars\\ - & \texttt{notextonly} & punctum mora are ignored before bars inside syllables, or bars having their own syllable without text\\ + & \texttt{notesonly} & punctum mora are ignored before notes, not bars\\ + & \texttt{barsonly} & punctum mora are ignored before bars, not notes\\ + & \texttt{notextonly} & punctum mora are ignored only before bars inside syllables, or bars having their own syllable without text\\ & \texttt{insideonly} & punctum mora are ignored only before bars inside syllables\\ & \texttt{never} & punctum mora are never ignored\\ \end{argtable} @@ -936,6 +942,22 @@ Macro to activate the new bar spacing algorithm. The new algorithm attempts to & \texttt{old} & Activates the old behavior (Default)\\ \end{argtable} +\subsubsection{Sign printing} + +\macroname{\textbackslash greprintsigns}{\{\#1\}\{\#2\}}{gregoriotex-signs.tex} +Macro to prevent rythmic signs from printing (all signs are printed by default): + +\begin{argtable} + \#1 & \texttt{vepisema} & sets the printing of vertical episema\\ + & \texttt{hepisema} & sets the printing of horizontal episema\\ + & \texttt{mora} & sets the printing of punctum mora and auctum duplex\\ + & \texttt{all} & set the printing of all of these\\ + \#2 & \texttt{enable} & enable the printing\\ + & \texttt{disable} & disable the priting\\ +\end{argtable} + +Note that punctum mora and auctum duplex have an influence on spacings, so removing them will have an impact on that matter. + \subsubsection{Hyphenation} \macroname{\textbackslash gresethyphen}{\{\#1\}}{gregoriotex-main.tex} @@ -962,6 +984,14 @@ Marco to determine how much space the hyphen at the end of a line occupies for t & \texttt{zero} & The hyphen is considered to take up no space \end{argtable} +\macroname{\textbackslash gresethyphenprotrusion}{\{\#1\}}{gregoriotex-spaces.tex} +Sets the protrusion factor of hyphens at end of lines. The default value is 50, a good compromise in the tested scores. + +\begin{argtable} + \#1 & \texttt{number} & The protrusion factor, percent +\end{argtable} + +Note that a proper interface for setting protrusion factor of punctuation signs might appear in the next version, deprecating this one. Also, this protrusion factor does not apply to all hyphens (only those inserted by the Lua pass), so use it with caution. \subsubsection{Clef Visibility} @@ -1193,10 +1223,6 @@ Minimum space between notes of syllables from different words. Minimum space between texts of different words. Please keep the same \texttt{plus} and \texttt{minus} as \texttt{interwordspacenotes}. \end{gdimension} -\begin{gdimension}{interwordspacetext@bars} -Minimum space between texts of different words when one of the syllable contains only a bar. -\end{gdimension} - \begin{gdimension}{interwordspacenotes@alteration} Same as \texttt{interwordspacenotes} for the case where the second syllable starts with an alteration. \end{gdimension} @@ -1213,10 +1239,6 @@ Same as \texttt{interwordspacenotes} for \texttt{euouae} blocks. Same as \texttt{interwordspacetext} for \texttt{euouae} blocks. \end{gdimension} -\begin{gdimension}{interwordspacetext@bars@euouae} -Same as \texttt{interwordspacetext@bars} for \texttt{euouae} blocks. -\end{gdimension} - \begin{gdimension}{bitrivirspace} Space between notes of a bivirga or trivirga. \end{gdimension} @@ -1301,58 +1323,6 @@ Space between a punctum inclinatum and a no-bar (stemless) glyph three or four pitches above. \end{gdimension} -\begin{gdimension}{spacearoundsmallbar} -Space around virgula and divisio minima. -\end{gdimension} - -\begin{gdimension}{spacearoundminor} -Space around divisio minor. -\end{gdimension} - -\begin{gdimension}{spacearoundmaior} -Space around divisio maior. -\end{gdimension} - -\begin{gdimension}{spacearoundfinalis} -Space around divisio finalis. -\end{gdimension} - -\begin{gdimension}{spacebeforefinalfinalis} -A special space for finalis, for when it is the last glyph. -\end{gdimension} - -\begin{gdimension}{spacearoundsmallbartext} -Space around virgula and divisio minima with text underneath. -\end{gdimension} - -\begin{gdimension}{spacearoundminortext} -Space around divisio minor with text underneath. -\end{gdimension} - -\begin{gdimension}{spacearoundmaiortext} -Space around divisio maior with text underneath. -\end{gdimension} - -\begin{gdimension}{spacearoundfinalistext} -Space around divisio finalis with text underneath. -\end{gdimension} - -\begin{gdimension}{spacebeforefinalfinalistext} -A special space for finalis with text underneath, for when it is the last glyph. -\end{gdimension} - -\begin{gdimension}{spacearoundclefbars} -Additional space that will appear around bars that are preceded by a custos and followed by a key. -\end{gdimension} - -\begin{gdimension}{textbartextspace} -Space between the text of previous syllable and the text associated with the bar (old bar spacing algorithm only). -\end{gdimension} - -\begin{gdimension}{notebarspace} -Minimal space between a note and a bar. -\end{gdimension} - \begin{gdimension}{maximumspacewithoutdash} Maximal space between two syllables for which we consider a dash is not needed. \end{gdimension} @@ -1484,12 +1454,8 @@ Distance an over-the-notes slur will be raised above the baseline of a note at t Distance an under-the-notes slur will be raised above the baseline of a note at the same height. \end{gdimension} -\begin{gdimension}{maxbaroffsettextleft} -Maximum distance by which the center of a bar and the center of its associated text can be separated, when the center of the text goes left of the center of the bar (new bar spacing algorithm only). -\end{gdimension} - -\begin{gdimension}{maxbaroffsettextright} -Same as \texttt{maxbaroffsettextleft} but when the center of the text goes right of the center of the bar. +\begin{gdimension}{divisiofinalissep} +Space separating the two bars of a divisio finalis. \end{gdimension} \begin{gdimension}{overhepisemalowshift} @@ -1544,6 +1510,128 @@ Vertical distance to place a punctum mora for the second note in a porrectus (or Distance to place a ``rare'' sign above the top space in a score. \end{gdimension} +\subsubsection*{Bar distances} + +\begin{gdimension}{bar@finalfinalis} +This space is added before the final divisio final of a score (old bar spacing algorithm only). +\end{gdimension} + +Spaces around bars when they are typeset inside a syllable: + +\begin{gdimension}{bar@virgula} +\end{gdimension} + +\begin{gdimension}{bar@minima} +\end{gdimension} + +\begin{gdimension}{bar@minor} +\end{gdimension} + +\begin{gdimension}{bar@dominican} +\end{gdimension} + +\begin{gdimension}{bar@maior} +\end{gdimension} + +\begin{gdimension}{bar@finalis} +\end{gdimension} + +Spaces around bars in standalone syllables, when these have text (new bar spacing algorithm only): + +\begin{gdimension}{bar@virgula@standalone@text} +\end{gdimension} + +\begin{gdimension}{bar@minima@standalone@text} +\end{gdimension} + +\begin{gdimension}{bar@minor@standalone@text} +\end{gdimension} + +\begin{gdimension}{bar@dominican@standalone@text} +\end{gdimension} + +\begin{gdimension}{bar@maior@standalone@text} +\end{gdimension} + +\begin{gdimension}{bar@finalis@standalone@text} +\end{gdimension} + +\begin{gdimension}{bar@finalfinalis@standalone@text} +\end{gdimension} + +Spaces around bars in standalone syllables, when these have no text (new bar spacing algorithm only): + +\begin{gdimension}{bar@virgula@standalone@notext} +\end{gdimension} + +\begin{gdimension}{bar@minima@standalone@notext} +\end{gdimension} + +\begin{gdimension}{bar@minor@standalone@notext} +\end{gdimension} + +\begin{gdimension}{bar@dominican@standalone@notext} +\end{gdimension} + +\begin{gdimension}{bar@maior@standalone@notext} +\end{gdimension} + +\begin{gdimension}{bar@finalis@standalone@notext} +\end{gdimension} + +\begin{gdimension}{bar@finalfinalis@standalone@notext} +\end{gdimension} + +\begin{gdimension}{spacearoundclefbars} +Additional space that will appear around bars that are preceded by a custos and followed by a key. +\end{gdimension} + +\begin{gdimension}{bar@rubber} +A rubber value applied on both sides of all bars in standalone syllables, in new bar spacing algorithm only. + +\textbf{Nota Bene:} This distance should always have a base value of 0pt. +\end{gdimension} + +\begin{gdimension}{interwordspacetext@bars} +Minimum space between texts of different words when one of the syllable contains only a bar (new bar spacing algorithm only). +\end{gdimension} + +\begin{gdimension}{interwordspacetext@bars@euouae} +Same as \texttt{interwordspacetext@bars} for \texttt{euouae} blocks (so quite rare). +\end{gdimension} + +\begin{gdimension}{textbartextspace} +Space between the text of previous syllable and the text associated with the bar (old bar spacing algorithm only). +\end{gdimension} + +\begin{gdimension}{notebarspace} +Minimal space between a note and a bar. +\end{gdimension} + +\begin{gdimension}{maxbaroffsettextleft} +Maximum distance by which the center of a bar and the center of its associated text can be separated, when the center of the text goes left of the center of the bar (new bar spacing algorithm only). +\end{gdimension} + +\begin{gdimension}{maxbaroffsettextright} +Same as \texttt{maxbaroffsettextleft} but when the center of the text goes right of the center of the bar. +\end{gdimension} + +\begin{gdimension}{maxbaroffsettextleft@nobar} +Maximum distance by which the center of a “no-bar” (\ie something like \texttt{*()} in gabc) and the center of its associated text can be separated, when the center of the text goes left of the center of the no-bar (new bar spacing algorithm only). +\end{gdimension} + +\begin{gdimension}{maxbaroffsettextright@nobar} +Same as \texttt{maxbaroffsettextleft@nobar} but when the center of the text goes right of the center of the no-bar. +\end{gdimension} + +\begin{gdimension}{maxbaroffsettextleft@eol} +Maximum distance by which the center of a bar and the center of its associated text can be separated, when the center of the text goes left of the center of the bar and the bar syllable contains a manual line break (new bar spacing algorithm only). +\end{gdimension} + +\begin{gdimension}{maxbaroffsettextright@eol} +Same as \texttt{maxbaroffsettextleft@eol} but when the center of the text goes right of the center of the bar. +\end{gdimension} + \subsection{Penalties}\label{penalties} Penalties are used by \TeX\ to determine where line and page breaks should occur. Gregorio\TeX\ modifies or defines a few of its own to help with that process in scores. diff --git a/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_gregorio.tex b/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_gregorio.tex index 97da3bf208e..f1f3e0c0254 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_gregorio.tex +++ b/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_gregorio.tex @@ -1094,6 +1094,9 @@ Macro which formats the mode in roman or arabic numerals according to the approp \#1 & \texttt{1}--\texttt{8} & The mode to be formated\\ \end{argtable} +\macroname{\textbackslash GreNoNoteSyllable}{}{gregoriotex-syllable.tex} +Alias for \verb=\GreSyllable= or \verb=\GreBarSyllable= depending on whether the old or new bar spacing algorithm (respectively) is active. This is used only for syllables which have no notes. + %%% Local Variables: %%% mode: latex %%% TeX-master: "GregorioRef" diff --git a/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_internal.tex b/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_internal.tex index 8577c6c1975..20f03c62861 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_internal.tex +++ b/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_internal.tex @@ -170,6 +170,8 @@ Calculates the difference between the end of the notes and the end of the syllab & \texttt{1} & save the value for the previous syllable before calculating the new value \end{argtable} +The formula used is \verb=#1 - #2 + #3 - #4= or (more sensibly) \verb=(#1 - #4) - (#2 - #3)=. This is also equivalent to \verb=-#4 - \gre@dimen@begindifference + #3=, a fact we take advantage of when calculating the end difference for a bar syllable under the new bar spacing algorithm. + \macroname{\textbackslash gre@changeonedimenfactor}{\#1\#2\#3}{gregoriotex-spaces.tex} Change the scale of a single distance from one factor to another. @@ -349,7 +351,7 @@ Draws a round over-brace using \MP{}. \#1 & string & the width of the brace; if \texttt{*}, use the bar brace width. \end{argtable} -\macroname{\textbackslash gre@render@fontbrace}{\#1\#2}{gregoriotex-signs.tex} +\macroname{\textbackslash gre@draw@fontbrace}{\#1\#2}{gregoriotex-signs.tex} Draws a brace using the score font. \begin{argtable} @@ -1136,8 +1138,8 @@ Typesets its numeric argument as a lower-case Roman numeral. \#1 & integer & The number to typeset\\ \end{argtable} -\macroname{\textbackslash gre@bar@text}{\#1}{gregoriotex-symbols.tex} -Macro used to switch between spacings where bar has text and those where it doesn't. +\macroname{\textbackslash gre@bar@space@suffix}{\#1\#2}{gregoriotex-symbols.tex} +Macro used to select the corresct suffix of the \verb=bar@x= spaces. \begin{argtable} \#1 & \texttt{0} & emits nothing\\ @@ -1161,8 +1163,11 @@ Workhorse function behind \verb=\GreDrawAdditionalLine=. \#6 & distance & The distance to end the line after \#2 from this point if \#3 is \texttt{2}. \\ \end{argtable} -\macroname{\textbackslash gre@kern@bar@aftermora}{}{gregoriotex-signs.tex} -Macro which kerns between a punctum mora and a kern according to the setting in \verb=\gre@count@barshiftaftermora=. +\macroname{\textbackslash gre@get@unkern@aftermora}{}{gregoriotex-signs.tex} +Calculates the amount of shift needed to take into account the presence of a punctum mora at the end of a syllable according to the setting in \verb=\gre@count@shiftaftermora=. + +\macroname{\textbackslash gre@unkern@bar@aftermora}{}{gregoriotex-signs.tex} +Macro which kerns between a punctum mora and a bar according to the setting in \verb=\gre@count@shiftaftermora=. \macroname{\textbackslash gre@setgregoriofontscaled}{[\#1]\#2\#3}{gregoriotex-main.tex} Workhorse behind \verb=\gresetgregoriofontscaled=. @@ -1176,6 +1181,39 @@ Workhorse behind \verb=\gresetgregoriofontscaled=. \#3 & integer & the scaling factor\\ \end{argtable} +\macroname{\textbackslash gre@calculate@barposition}{\#1\#2}{gregoriotex-spaces.tex} +Macro for calculating the position of the elements of a bar syllable using the new bar positioning algorithm. + +\begin{argtable} + \#1 & 0 & bar is not the end of a word\\ + & 1 & bar is the end of a word\\ + \#2 & integer & alignment type of the first glyph in the next syllable. See \nameref{notesalign}\\ +\end{argtable} + +\macroname{\textbackslash gre@newlinearg}{}{gregoriotex-syllable.tex} +Macro for storing the argument for \verb=\gre@newlinecommon= when the line break must be delayed (i.e. in the new bar spacing algorithm). + +\macroname{\textbackslash gre@newlinecommondelayed}{}{gregoriotex-syllable.tex} +Macro used in place of \verb=\gre@newlinecommon= when the line break must be delayed. + +\macroname{\textbackslash gre@newlinecommonsaved}{}{gregoriotex-syllable.tex} +Macro for storing original behavior of \verb=\gre@newlinecommon= so that it can be restored after the delayed line break takes effect. + +\macroname{\textbackslash gre@punctum@mora}{\#1\#2\#3\#4}{gregoriotex-signs.tex} +Macro to typeset a punctum mora. + +\begin{argtable} + \#1 & pitch & height of the punctum mora (one of the \verb=\gre@pitch@...= macros.\\ + \#2 & 0 & general case\\ + & 1 & make the punctum mora zero-width\\ + & 2 & shift the width of one punctum to the left\\ + & 3 & same as 2 but with ambitus of one\\ + \#3 & 1 & punctum mora in the note before the last note of a podatus, porrectus, or torculus resupinus\\ + & 0 & other cases\\ + \#4 & 1 & punctum inclinatum\\ + & 0 & other cases\\ +\end{argtable} + \subsection{Auxiliary File} Gregorio\TeX\ creates its own auxiliary file (extension \texttt{gaux}) which it uses to store information between successive typesetting runs. This allows for such features as the dynamic interline spacing. The following functions are used to interact with that auxiliary file. @@ -1443,9 +1481,6 @@ Boolean which indicates if the previous syllable ends with a punctum mora (set g \macroname{\textbackslash ifgre@thisendswithmora}{}{gregoriotex-syllable.tex} Same as previous one but for current syllable. -\macroname{\textbackslash ifgre@lastispunctumsave}{}{gregoriotex-signs.tex} -Boolean for storing \verb=\ifgre@lastispunctum= so that it can be restored later. - \macroname{\textbackslash ifgre@ledgerline@above}{}{gregoriotex-spaces.tex} Boolean which indicates whether the system should act as if there is a ledger line above the staff. @@ -1513,7 +1548,10 @@ Boolean which indicates that the clef should be visible. Boolean which indicates that a hyphen after an empty first syllable should be forced. \macroname{\textbackslash ifgre@showhyphenafterthissyllable}{}{gregoriotex-syllable.tex} -Boolean used by \verb=\GreSyllable= to decide if a hyphen should be shown after the syllable. +Boolean set and used by \verb=\GreSyllable= to decide if a hyphen should be shown after the syllable. + +\macroname{\textbackslash ifgre@possibleluahyphenafterthissyllable}{}{gregoriotex-syllable.tex} +Boolean set by \verb=\GreSyllable= indicating if the Lua pass may add an hyphen after the syllable, used by \verb=\gre@calculate@eolshift= for protrusion calculation. \macroname{\textbackslash ifgre@thirdlineadjustmentnecessary}{}{gregoriotex-syllable.tex} Boolean which indicates that a third-line adjustment to staff line width is necessary. @@ -1530,8 +1568,8 @@ Boolean indicating whether the staff has a fourth line. \macroname{\textbackslash ifgre@haslinefive}{}{gregoriotex-spaces.tex} Boolean indicating whether the staff has a fifth line. -\macroname{\textbackslash gre@count@barshiftaftermora}{}{gregoriotex-signs.tex} -Count indicating when the presence of a punctum mora immediately before a bar line should affect the spacing. +\macroname{\textbackslash gre@count@shiftaftermora}{}{gregoriotex-signs.tex} +Count indicating when the presence of a punctum mora at the end of a syllable should affect the spacing with the next syllable. \macroname{\textbackslash gre@count@lastglyphiscavum}{}{gregoriotex-spaces.tex} Count indicating if the last glyph has a cavum (this includes flats, naturals, punctum cavum, etc.), when staff line shouldn't appear underneath this empty part. Can be: @@ -1547,6 +1585,18 @@ Boolean which controls whether deprecated functions raise a warning (true) or an \macroname{\textbackslash ifgre@newbarspacing}{}{gregoriotex-syllable.tex} Boolean which controls whether the new bar spacing algorithm is activated. +\macroname{\textbackslash ifgre@disablehepisema}{}{gregoriotex-signs.tex} +Boolean to disable the printing of horizontal episemata. + +\macroname{\textbackslash ifgre@disablemora}{}{gregoriotex-signs.tex} +Boolean to disable the printing of punctum morae. + +\macroname{\textbackslash ifgre@disablevepsiema}{}{gregoriotex-signs.tex} +Boolean to disable the printing of vertical episemata. + +\macroname{\textbackslash ifgre@lastendswithmorasave}{}{gregoriotex-syllable.tex} +Boolean for saving \verb=\ifgre@lastendswithmora= for later restoration. + \subsection{Boxes} @@ -1595,6 +1645,12 @@ Box holding the text associated with a syllable. Box holding the horizontal episema. +\subsection{Protrusion factors} +Protrusion factors are counts representing a protrusion factor over 100. + +\macroname{\textbackslash gre@count@protrusion@hyphen@eol}{}{gregoriotex-spaces.tex} +Protrusion factor applied to hyphens at end of lines. + \subsection{Distances} All of the distances listed in \nameref{distances} have an internal associated @@ -1666,16 +1722,23 @@ The space between the lines. The value that a particular glyph must be raised to be set in the correct position. \macroname{\textbackslash gre@dimen@enddifference}{}{gregoriotex-spaces.tex} -Distance from the end of the notes to the end of the text for the previous syllable. Positive values when notes go further than text, negative in the other case. +Distance from the end of the notes to the end of the text for the previous syllable. Positive values when notes go further than text, negative in the other case. This means that \verb=\kern\gre@dimen@enddifference= will take you from the end of the text to the end of the notes. + +For regular syllables and bar syllables using the old bar spacing algorithm this is calculated using \verb=\gre@calculate@enddifference=. For bar syllables using the new bar spacing algorithm the calculation is \verb=-\wd\gre@box@syllabletext - \gre@dimen@begindifference + \wd\gre@box@syllablenotes= \macroname{\textbackslash gre@dimen@previousenddifference}{}{gregoriotex-spaces.tex} Stored value of enddifference prior to the current one. +\macroname{\textbackslash gre@dimen@adjustedpreviousenddifference}{}{gregoriotex-spaces.tex} +Stored value of enddifference prior to the current one after adjusting for the possibility of a punctum mora at the end of the last syllable (and the setting of \verb=\gre@count@aftermorashift=. + \macroname{\textbackslash gre@skip@nextbegindifference}{}{gregoriotex-spaces.tex} The difference between the start of the notes and the start of the text for the next syllable. Positive when when text begins first, negative in other case. \macroname{\textbackslash gre@dimen@begindifference}{}{gregoriotex-spaces.tex} -The difference between the start of the notes and the start of the text for the current syllable. Positive when when text begins first, negative in other case. +The difference between the start of the notes and the start of the text for the current syllable. Positive when when text begins first, negative in other case. This means that \verb=\kern\gre@dimen@begindifference= will take you from the start of the notes to the start of the text. + +For regular syllables and bar syllables using the old bar spacing algorithm this is calculated as \verb=\gre@dimen@notesaligncenter - \gre@dimen@textaligncenter=. For bar syllables using the new bar spacing algorithm the calculation is \verb= -\wd\gre@box@syllablenotes/2 - \gre@dimen@bar@shift - \gre@skip@bar@allocation - \gre@dimen@adjustedpreviousenddifference + \gre@skip@text@allocation + \gre@dimen@text@shift -\wd\gre@box@syllabletext/2=. \macroname{\textbackslash gre@dimen@lastglyphwidth}{}{gregoriotex-spaces.tex} The width of the last glyph. @@ -1738,6 +1801,31 @@ The final distance to skip at the end of a syllable. Stores the computed height of a variable-length slur. The control sequence name does not have the \texttt{@} symbol because this dimension is used within \MP{}. +\macroname{\textbackslash gre@dimen@bar@shift}{}{gregoriotex-spaces.tex} +Shift of the bar away from its center position to account for the offset limits in the new bar spacing algorithm. + +\macroname{\textbackslash gre@dimen@text@shift}{}{gregoriotex-spaces.tex} +Shift of the text away from its center position to account for the offset limits in the new bar spacing algorithm. + +\macroname{\textbackslash gre@skip@bar@allocation}{}{gregoriotex-spaces.tex} +Space allocated to the bar in the new bar spacing algorithm. + +\macroname{\textbackslash gre@skip@bar@requirement}{}{gregoriotex-spaces.tex} +Space required by the bar in the new bar spacing algorithm. + +\macroname{\textbackslash gre@skip@text@allocation}{}{gregoriotex-spaces.tex} +Space allocated to the text in the new bar spacing algorithm. + +\macroname{\textbackslash gre@skip@text@requirement}{}{gregoriotex-spaces.tex} +Space required by the text in the new bar spacing algorithm. + +\macroname{\textbackslash gre@skip@bar@lastskip}{}{gregoriotex-signs.tex} +Skip after the most recent bar. + +\macroname{\textbackslash gre@skip@punctummorashift}{}{gregoriotex-spaces.tex} +Displacement of whole syllable to account for the presence of a punctum mora at the end of the previous syllable + + \subsection{Penalties} These are the macros that Gregorio\TeX\ uses to manipulate the penalties in order to control line and page breaks within a score without affect the surrounding text. @@ -1856,9 +1944,12 @@ rather than have multiple definitions. \texttt{8} & flexus with an ambitus of one\\ \texttt{9} & flexus deminutus\\ \texttt{10} & virgula\\ - \texttt{11} & divisio minima, minor, maior or dominican bar\\ - \texttt{12} & divisio finalis\\ - \texttt{13} & no note + \texttt{11} & divisio minima\\ + \texttt{12} & divisio minor\\ + \texttt{13} & divisio maior\\ + \texttt{14} & dominican bar\\ + \texttt{15} & divisio finalis\\ + \texttt{16} & no note \end{tabulary} \subsection{Episema Special}\label{EpisemaSpecial} diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0-rc1.pdf b/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0-rc1.pdf deleted file mode 100644 index 4bd86d99db4..00000000000 Binary files a/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0-rc1.pdf and /dev/null differ diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0-rc2.pdf b/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0-rc2.pdf new file mode 100644 index 00000000000..a11010469e0 Binary files /dev/null and b/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0-rc2.pdf differ diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0-rc1.pdf b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0-rc1.pdf deleted file mode 100644 index e6807bd2cf4..00000000000 Binary files a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0-rc1.pdf and /dev/null differ diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0-rc2.pdf b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0-rc2.pdf new file mode 100644 index 00000000000..eca215b5377 Binary files /dev/null and b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0-rc2.pdf differ diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.tex b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.tex index 0125d118a2b..80731814ea5 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.tex +++ b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.tex @@ -152,7 +152,7 @@ \vspace{1cm} - \large Version \textbf{4.1.0-rc1}, 18 February 2016 %% PARSE_VERSION_DATE + \large Version \textbf{4.1.0-rc2}, 25 February 2016 %% PARSE_VERSION_DATE \vspace{1.5cm} \end{center} diff --git a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c index 647d1ab8341..041c8806682 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c @@ -1104,16 +1104,13 @@ static void gregoriotex_write_voice_info(FILE *f, gregorio_voice_info *voice_inf "file or voice_info passed as NULL", return); } -/* this function indicates if the syllable is the last of the line. If it's the - * last of the score it returns false, as it's handled another way */ -static bool gregoriotex_is_last_of_line(gregorio_syllable *syllable) +/* this function indicates if the syllable is the last of the line or score. */ +static bool is_last_of_line(gregorio_syllable *syllable) { gregorio_element *current_element = NULL; - if (!(syllable->next_syllable)) { - return false; - } - if ((syllable->next_syllable->elements)[0] - && (syllable->next_syllable->elements)[0]->type == GRE_END_OF_LINE) { + if (!(syllable->next_syllable) || ((syllable->next_syllable->elements)[0] + && (syllable->next_syllable->elements)[0]->type + == GRE_END_OF_LINE)) { /* the next syllable start by an end of line */ return true; } @@ -1135,6 +1132,21 @@ static bool gregoriotex_is_last_of_line(gregorio_syllable *syllable) return false; } +/* determines if there are more GRE_GLYPHs */ +static bool has_more_notes(const gregorio_element *element) { + for (element = element->next; element; element = element->next) { + if (element->type == GRE_ELEMENT) { + const gregorio_glyph *glyph; + for (glyph = element->u.first_glyph; glyph; glyph = glyph->next) { + if (glyph->type == GRE_GLYPH) { + return true; + } + } + } + } + return false; +} + /* * ! @brief Prints the beginning of each text style */ @@ -1556,11 +1568,12 @@ OFFSET_CASE(BarVirgula); OFFSET_CASE(BarDivisioFinalis); static void write_bar(FILE *f, gregorio_bar type, - gregorio_sign signs, bool is_inside_bar, bool has_text) + gregorio_sign signs, bool is_inside_bar, bool has_text, unsigned char first_of_disc) { /* the type number of function vepisemaorrare */ const char *offset_case = BarStandard; - if (is_inside_bar) { + /* don't use "In" version of bars in the first argument of a GreDiscretionary */ + if (is_inside_bar && first_of_disc != 1) { fprintf(f, "\\GreIn"); } else { fprintf(f, "\\Gre"); @@ -2384,8 +2397,14 @@ static int gregoriotex_syllable_first_type(gregorio_syllable *syllable) result = 10; break; case B_DIVISIO_MINIMA: + result = 11; + break; case B_DIVISIO_MINOR: + result = 12; + break; case B_DIVISIO_MAIOR: + result = 13; + break; case B_DIVISIO_MINOR_D1: case B_DIVISIO_MINOR_D2: case B_DIVISIO_MINOR_D3: @@ -2394,10 +2413,10 @@ static int gregoriotex_syllable_first_type(gregorio_syllable *syllable) case B_DIVISIO_MINOR_D6: case B_DIVISIO_MINOR_D7: case B_DIVISIO_MINOR_D8: - result = 11; + result = 14; break; case B_DIVISIO_FINALIS: - result = 12; + result = 15; break; default: /* not reachable unless there's a programming error */ @@ -2473,7 +2492,7 @@ static int gregoriotex_syllable_first_type(gregorio_syllable *syllable) } /* the only thing that should reach this point is an empty next syllable * we treat that kind of syllable as a bar */ - return 13; + return 16; } static __inline void write_low_choral_sign(FILE *const f, @@ -3099,7 +3118,7 @@ static void gregoriotex_print_change_line_clef(FILE *f, } } -static __inline bool is_manual_custos(const gregorio_element *element) +static __inline bool is_manual_custos(const gregorio_element *const element) { return element->type == GRE_CUSTOS && element->u.misc.pitched.force_pitch; } @@ -3354,6 +3373,7 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable, const char *syllable_type = NULL; bool event_anticipated = false; bool end_of_word; + bool end_of_line; gregorio_not_null(syllable, write_syllable, return); end_of_word = syllable->position == WORD_END || syllable->position == WORD_ONE_SYLLABLE || !syllable->text @@ -3438,12 +3458,16 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable, * bar syllable */ syllable_type = "\\GreBarSyllable"; } else { - syllable_type = "\\GreSyllable"; + if (first_of_disc == 1) { + syllable_type = "\\GreBarSyllable"; + } else { + syllable_type = "\\GreSyllable"; + } } } else { write_fixed_text_styles(f, syllable->text, syllable->next_syllable? syllable->next_syllable->text : NULL); - syllable_type = "\\GreBarSyllable"; + syllable_type = "\\GreNoNoteSyllable"; } write_this_syllable_text(f, syllable_type, syllable->text, end_of_word); fprintf(f, "{}{\\Gre%s}", syllable->first_word ? "FirstWord" : "Unstyled"); @@ -3452,17 +3476,25 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable, } else { fprintf(f, "{0}"); } + end_of_line = is_last_of_line(syllable); if (syllable->next_syllable) { fprintf(f, "{\\GreSetNextSyllable"); write_text(f, syllable->next_syllable->text); + if (end_of_line) { + fprintf(f, "\\GreLastOfLine"); + } fprintf(f, "}{"); write_syllable_point_and_click(f, syllable, status); fprintf(f, "}{%d}{", gregoriotex_syllable_first_type(syllable->next_syllable)); } else { - fprintf(f, "{\\GreSetNextSyllable{}{}{}{}{}}{"); + fprintf(f, "{\\GreSetNextSyllable{}{}{}{}{}"); + if (end_of_line) { + fprintf(f, "\\GreLastOfLine"); + } + fprintf(f, "}{"); write_syllable_point_and_click(f, syllable, status); - fprintf(f, "}{0}{"); + fprintf(f, "}{16}{"); } if (syllable->translation) { if (syllable->translation_type == TR_WITH_CENTER_BEGINNING) { @@ -3481,17 +3513,10 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable, fprintf(f, "%%\n\\GreSetTextAboveLines{%s}%%\n", syllable->abovelinestext); } - if (gregoriotex_is_last_of_line(syllable)) { - fprintf(f, "%%\n\\GreLastOfLine %%\n"); - } - if (!syllable->next_syllable) { - fprintf(f, "%%\n\\GreLastOfScore %%\n"); - } fprintf(f, "}{%%\n"); if (syllable->elements) { - for (element = *syllable->elements; element; - element = element->next) { + for (element = *syllable->elements; element; element = element->next) { if (element->nabc_lines && element->nabc) { size_t i; for (i = 0; i < element->nabc_lines; i++) { @@ -3501,6 +3526,9 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable, } } } + if (!syllable->next_syllable && !has_more_notes(element)) { + fprintf(f, "\\GreLastOfScore"); + } switch (element->type) { case GRE_SPACE: switch (element->u.misc.unpitched.info.space) { @@ -3601,8 +3629,9 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable, case GRE_BAR: write_bar(f, element->u.misc.unpitched.info.bar, element->u.misc.unpitched.special_sign, - element->next && !is_manual_custos(element->next), - !element->previous && syllable->text); + element->next && !is_manual_custos(element->next) + && element->next->type != GRE_END_OF_LINE, + !element->previous && syllable->text, first_of_disc); break; case GRE_END_OF_LINE: diff --git a/Build/source/texk/gregorio/gregorio-src/windows/gregorio-resources.rc b/Build/source/texk/gregorio/gregorio-src/windows/gregorio-resources.rc index fcb9ce7118f..00fd5c0e909 100644 --- a/Build/source/texk/gregorio/gregorio-src/windows/gregorio-resources.rc +++ b/Build/source/texk/gregorio/gregorio-src/windows/gregorio-resources.rc @@ -1,7 +1,7 @@ IDI_ICON1 ICON DISCARDABLE "gregorio.ico" 1 VERSIONINFO -FILEVERSION 4,1,0,21 -PRODUCTVERSION 4,1,0,21 +FILEVERSION 4,1,0,22 +PRODUCTVERSION 4,1,0,22 BEGIN BLOCK "StringFileInfo" BEGIN @@ -9,12 +9,12 @@ BEGIN BEGIN VALUE "CompanyName", "Gregorio project" VALUE "FileDescription", "Gregorio" - VALUE "FileVersion", "4.1.0-rc1" + VALUE "FileVersion", "4.1.0-rc2" VALUE "InternalName", "gregorio" VALUE "LegalCopyright", "See COPYING in the installation directory." VALUE "OriginalFilename", "gregorio.exe" VALUE "ProductName", "Gregorio" - VALUE "ProductVersion", "4.1.0-rc1" + VALUE "ProductVersion", "4.1.0-rc2" END END diff --git a/Build/source/texk/gregorio/version.ac b/Build/source/texk/gregorio/version.ac index 2affd2b70b8..d92b729f8ec 100644 --- a/Build/source/texk/gregorio/version.ac +++ b/Build/source/texk/gregorio/version.ac @@ -8,4 +8,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current gregorio version -m4_define([gregorio_version], [4.1.0-rc1]) +m4_define([gregorio_version], [4.1.0-rc2]) -- cgit v1.2.3