diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ecc44a06..f00bdc57e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,21 +65,7 @@ As of v3.0.0 this project adheres to [Semantic Versioning](http://semver.org/). - Controls for tuning horizontal episema vertical position. See GregorioRef for details (for the change request, see [#872](https://github.com/gregorio-project/gregorio/issues/872)). - More dimensions are tunable: `overhepisemalowshift`, `overhepisemahighshift`, `underhepisemalowshift`, `underhepisemahighshift`, `hepisemamiddleshift`, `vepisemalowshift`, `vepisemahighshift`, `linepunctummorashift`, `spacepunctummorashift`, `spaceamonepespunctummorashift`, `lineporrectuspunctummorashift`, `spaceporrectuspunctummorashift`, `raresignshift`. See GregorioRef for details (for the change request for most of these, see comments in [#872](https://github.com/gregorio-project/gregorio/issues/872)). - A new dimension, `intersyllablespacestretchhyphen` is now available to add stretching in the case of syllables separated by an hyphen (see comments in [#922](https://github.com/gregorio-project/gregorio/issues/922)) -- A new algorithm for placing bar syllables has been added and is now the default. It should make both bars and text centered between respectively notes and text of previous and following syllable. It can be configured in many ways through the following: - - `maxbaroffsettextright` - - `maxbaroffsettextleft` - - `maxbaroffsettextright@nobar` - - `maxbaroffsettextleft@nobar` - - `maxbaroffsettextright@eol` - - `maxbaroffsettextleft@eol` - - `bar@*@standalone@text` (where `*` is the type of bar) - - `bar@*@standalone@notext` (where `*` is the type of bar) - - `interwordspacetext@bars` - - `interwordspacetext@bars@euouae` - - `interwordspacetext@bars@notext` - - `interwordspacetext@bars@notext@euouae` - - `bar@rubber` -The old spacing can be activated with `\gresetbarspacing{old}`. See the following for various aspects of the implementation: +- A new algorithm for placing bar syllables has been added and is now the default. See UPGRADE.md for more details. The old spacing can be activated with `\gresetbarspacing{old}`. See the following for various aspects of the implementation: - [#767](https://github.com/gregorio-project/gregorio/issues/767) - [#919](https://github.com/gregorio-project/gregorio/issues/919) - [#944](https://github.com/gregorio-project/gregorio/issues/944) diff --git a/UPGRADE.md b/UPGRADE.md index 0cd28f5ae..207d8723f 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -56,13 +56,28 @@ In the past, Gregorio handled the notes of an `` block like any other, which #### New algorithm -A new algorithm has been implemented but is turned off by default. We hope this will be a significant improvement over previous one, but it still has a few bugs. You can turn it on with +A new algorithm has been implemented and is turned on by default. We hope this will be a significant improvement over the previous one. The primary goal of the new algorithm is to place the bar line exactly between the notes which surround it and do the same with the text associated with the bar line. However, it will also keep the text and bar reasonably close together and with sufficent space between the bar syallable and the surrounding syllables (possibly introducing space to meet the competing interests). The new algorithm introduces several new spaces allowing the user to tune the algorithm: + - `maxbaroffsettextright` + - `maxbaroffsettextleft` + - `maxbaroffsettextright@nobar` + - `maxbaroffsettextleft@nobar` + - `maxbaroffsettextright@eol` + - `maxbaroffsettextleft@eol` + - `bar@*@standalone@text` (where `*` is the type of bar) + - `bar@*@standalone@notext` (where `*` is the type of bar) + - `interwordspacetext@bars` + - `interwordspacetext@bars@euouae` + - `interwordspacetext@bars@notext` + - `interwordspacetext@bars@notext@euouae` + - `bar@rubber` +If you prefer the old bar spacing algorithm, you can revert to that with: ``` -\gresetbarspacing{new} +\gresetbarspacing{old} ``` -If you do give it a try, please be sure to report any bugs you find. +Another big change in this algorithm is that empty syllables, i.e. ones without any notes, are now treated as a 0-width bar, not as a 0-width note. Thus if you were using this sort of syllable to insert space into your score, chances are the results will be different under the new algorithm and will require you to re-tweak your scores. + #### Renaming of spaces @@ -103,6 +118,7 @@ If you were using `\scorereference`, `\GreScoreReference`, and/or `\grescorerefe Three descending notes that have no other markings (such as liquescentia) will now be rendered as a clivis followed by a punctum. The older, incorrect behavior was to group them as three punctums joined by `!`. If you prefer this behavior, explicitly separate the notes with `!`. + ## 4.0 ### Font changes diff --git a/doc/Command_Index_User.tex b/doc/Command_Index_User.tex index 329274a3e..4c7380a69 100644 --- a/doc/Command_Index_User.tex +++ b/doc/Command_Index_User.tex @@ -787,6 +787,8 @@ \subsubsection{Text Elements} \#1 & number & The number of lines required by the initial. If \texttt{0}, the score will have no separated initial.\\ \end{argtable} +\textbf{Nota Bene:} As currently implemented, you cannot set an initial which is larger than 2 lines and in order to do so you must set manual line breaks in the gabc for the first two lines. + \macroname{\textbackslash gresetmodenumbersystem}{\#1}{gregoriotex-main.tex} Sets the number system used for the mode number. diff --git a/macosx/create_package.sh b/macosx/create_package.sh index e5e917e38..b318e96eb 100755 --- a/macosx/create_package.sh +++ b/macosx/create_package.sh @@ -54,8 +54,9 @@ else ./build.sh --arch=x86_64 # If the build process fails we halt this script here, since we can't build the # package without a properly compiled version of Gregorio. - if [ ! $? -eq 0 ]; then - exit $? + exit_code=$? + if [ ! $exit_code -eq 0 ]; then + exit $exit_code fi make DESTDIR=$BUILDDIR install ./install-gtex.sh dir:$BUILDDIR/tmp/gregorio diff --git a/tex/gregoriotex-main.tex b/tex/gregoriotex-main.tex index e03de4f76..b6925a23e 100644 --- a/tex/gregoriotex-main.tex +++ b/tex/gregoriotex-main.tex @@ -1249,6 +1249,11 @@ %macro called at the end of a score \def\GreEndScore{% + \ifnum\gre@biginitial=1\relax% + \ifnum\gre@knownline<3\relax% + \gre@error{Score ended before finding the end\MessageBreak of the second line of a 2-line initial. Make sure\MessageBreak you have at least two manual line breaks in \MessageBreak your gabc}% + \fi% + \fi% \global\gre@lastoflinecount=0\relax % \gre@useautoeolcustos% \GreEndEUOUAE{}% diff --git a/tex/gregoriotex-syllable.tex b/tex/gregoriotex-syllable.tex index cdb82625e..8c8960476 100644 --- a/tex/gregoriotex-syllable.tex +++ b/tex/gregoriotex-syllable.tex @@ -1240,7 +1240,21 @@ }% }% -\def\gresetinitiallines#1{\def\gre@initiallines{#1}}% +\def\gresetinitiallines#1{% + \IfInteger{#1}% + {% + \ifnum#1>-1\relax% + \ifnum#1<3\relax% + \def\gre@initiallines{#1}% + \else% + \gre@error{The argument for \protect\gresetinitiallines\space must be 0, 1, or 2}% + \fi% + \else% + \gre@error{The argument for \protect\gresetinitiallines\space must be positive}% + \fi% + }% + {\gre@error{\protect\gresetinitiallines\space takes a positive integer argument}}% +}% \gresetinitiallines{1}% default to one-line initials \def\GreSetInitialStyle#1{%%% DEPRECATED by 4.1