summaryrefslogtreecommitdiff
path: root/Build/source/texk
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2016-03-11 06:12:34 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2016-03-11 06:12:34 +0000
commit7cd1d4e0b78e2897415639c5ac54d796c6cb626e (patch)
treed025b354692eeba9e0eb1b9e5424f179a7368c5c /Build/source/texk
parentd8724eeb9c7c37993fc0d3ac6e5995c96b2a085e (diff)
gregorio 4.1.1
git-svn-id: svn://tug.org/texlive/trunk@39995 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk')
-rw-r--r--Build/source/texk/README2
-rw-r--r--Build/source/texk/gregorio/ChangeLog7
-rwxr-xr-xBuild/source/texk/gregorio/configure22
-rw-r--r--Build/source/texk/gregorio/configure.ac2
-rw-r--r--Build/source/texk/gregorio/gregorio-PATCHES/ChangeLog4
-rw-r--r--Build/source/texk/gregorio/gregorio-PATCHES/TL-Changes4
-rw-r--r--Build/source/texk/gregorio/gregorio-src/.gregorio-version2
-rw-r--r--Build/source/texk/gregorio/gregorio-src/CHANGELOG.md33
-rw-r--r--Build/source/texk/gregorio/gregorio-src/UPGRADE.md32
-rw-r--r--Build/source/texk/gregorio/gregorio-src/configure.ac4
-rw-r--r--Build/source/texk/gregorio/gregorio-src/doc/Command_Index_User.tex43
-rw-r--r--Build/source/texk/gregorio/gregorio-src/doc/Command_Index_gregorio.tex25
-rw-r--r--Build/source/texk/gregorio/gregorio-src/doc/Command_Index_internal.tex18
-rw-r--r--Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_1.pdf (renamed from Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0.pdf)bin279355 -> 279407 bytes
-rw-r--r--Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_1.pdf (renamed from Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0.pdf)bin670161 -> 675816 bytes
-rw-r--r--Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.tex2
-rw-r--r--Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c279
-rw-r--r--Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y11
-rw-r--r--Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c159
-rw-r--r--Build/source/texk/gregorio/gregorio-src/src/struct.h1
-rw-r--r--Build/source/texk/gregorio/gregorio-src/windows/gregorio-resources.rc8
-rw-r--r--Build/source/texk/gregorio/version.ac2
22 files changed, 420 insertions, 240 deletions
diff --git a/Build/source/texk/README b/Build/source/texk/README
index bacebca8cfe..1d70e7d335f 100644
--- a/Build/source/texk/README
+++ b/Build/source/texk/README
@@ -61,7 +61,7 @@ dvipsk - maintained here, by us
dvisvgm 1.15 - checked 27feb16
http://dvisvgm.bplaced.net/Downloads
-gregorio 4.1.0 - checked 02mar16
+gregorio 4.1.1 - checked 11mar16
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 c439691ee24..4d5d35214f4 100644
--- a/Build/source/texk/gregorio/ChangeLog
+++ b/Build/source/texk/gregorio/ChangeLog
@@ -1,7 +1,12 @@
+2016-03-11 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ Import gregorio-4.1.1.
+ * version.ac, configure.ac: Adapted.
+
2016-03-02 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
Import gregorio-4.1.0.
- * version.ac: Adapted.
+ * version.ac, configure.ac: Adapted.
2016-02-25 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
diff --git a/Build/source/texk/gregorio/configure b/Build/source/texk/gregorio/configure
index 87c2900e7b5..4645b7c4e6a 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.
+# Generated by GNU Autoconf 2.69 for Gregorio (TeX Live) 4.1.1.
#
# Report bugs to <tex-k@tug.org>.
#
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='Gregorio (TeX Live)'
PACKAGE_TARNAME='gregorio--tex-live-'
-PACKAGE_VERSION='4.1.0'
-PACKAGE_STRING='Gregorio (TeX Live) 4.1.0'
+PACKAGE_VERSION='4.1.1'
+PACKAGE_STRING='Gregorio (TeX Live) 4.1.1'
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 to adapt to many kinds of systems.
+\`configure' configures Gregorio (TeX Live) 4.1.1 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:";;
+ short | recursive ) echo "Configuration of Gregorio (TeX Live) 4.1.1:";;
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
+Gregorio (TeX Live) configure 4.1.1
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, which was
+It was created by Gregorio (TeX Live) $as_me 4.1.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -7870,7 +7870,7 @@ fi
# Define the identity of the package.
PACKAGE='gregorio--tex-live-'
- VERSION='4.1.0'
+ VERSION='4.1.1'
cat >>confdefs.h <<_ACEOF
@@ -14254,7 +14254,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-Gregorio (TeX Live) config.lt 4.1.0
+Gregorio (TeX Live) config.lt 4.1.1
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, which was
+This file was extended by Gregorio (TeX Live) $as_me 4.1.1, 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
+Gregorio (TeX Live) config.status 4.1.1
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 2a6bf37f393..832430deb7e 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"
+FILENAME_VERSION="4_1_1"
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 3f644b996de..4f744119f81 100644
--- a/Build/source/texk/gregorio/gregorio-PATCHES/ChangeLog
+++ b/Build/source/texk/gregorio/gregorio-PATCHES/ChangeLog
@@ -1,3 +1,7 @@
+2016-03-11 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
+
+ Import gregorio-4.1.1.
+
2016-03-02 Akira Kakuto <kakuto@fuk.kindai.ac.jp>
Import gregorio-4.1.0.
diff --git a/Build/source/texk/gregorio/gregorio-PATCHES/TL-Changes b/Build/source/texk/gregorio/gregorio-PATCHES/TL-Changes
index 51bccd99a74..9fde9283b41 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 tree as obtained from:
- https://github.com/gregorio-project/gregorio/releases/tag/v4.1.0/
+Changes applied to the gregorio-4.1.1 tree as obtained from:
+ https://github.com/gregorio-project/gregorio/releases/tag/v4.1.1/
Remove:
Makefile.in
diff --git a/Build/source/texk/gregorio/gregorio-src/.gregorio-version b/Build/source/texk/gregorio/gregorio-src/.gregorio-version
index b6567853108..f121aa4e0af 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
+4.1.1
*** 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 5737429f4ba..81c411e1489 100644
--- a/Build/source/texk/gregorio/gregorio-src/CHANGELOG.md
+++ b/Build/source/texk/gregorio/gregorio-src/CHANGELOG.md
@@ -2,6 +2,23 @@
All notable changes to this project will be documented in this file.
As of v3.0.0 this project adheres to [Semantic Versioning](http://semver.org/). It follows [some conventions](http://keepachangelog.com/).
+[Unreleased][unreleased]
+
+
+## [4.1.1] - 2016-03-10
+### Fixed
+- Custos now shouldn't go right of the staff lines (was visible only in edge cases, see [#990](https://github.com/gregorio-project/gregorio/issues/990)).
+- Corrected the end-of-line shift for a ragged line break before `<eu>` blocks (see [#988](https://github.com/gregorio-project/gregorio/issues/988)).
+- Additional space is now added on top of lines with very high notes or signs (see [#883](https://github.com/gregorio-project/gregorio/issues/883)).
+- High notes are now taken into account for vertical placement of above lines test (see [#960](https://github.com/gregorio-project/gregorio/issues/960)).
+- Forced syllable centers can be used in to override alignment issues when lyric centering is set to `syllable` or `firstletter`. This is a restoration of old behavior (pre-4.0), but can be turned off with `\gresetgabcforcecenters{prohibit}`. See [968](https://github.com/gregorio-project/gregorio/issues/968).
+- Deminutus figures in nabc work again (see [#1015](https://github.com/gregorio-project/gregorio/issues/1015)).
+- Orphaned syllables should appear less frequently at end of score (see [1019](https://github.com/gregorio-project/gregorio/issues/1019)).
+
+### Added
+- The macro `\grechangecount` now allows to change some numeric values of the configuration. This version introduces two of them: `additionaltopspacethreshold` and `additionaltopspacealtthreshold`, see GregorioRef for details.
+- The penalty `grefinalpenalty` (0 by default) is added at the end of the score. Be sure you know what you're doing before modifying it.
+
## [4.1.0] - 2016-03-01
### Fixed
- Hyphens now shouldn't go right of the staff lines (see [#845](https://github.com/gregorio-project/gregorio/issues/845)).
@@ -51,21 +68,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/Build/source/texk/gregorio/gregorio-src/UPGRADE.md b/Build/source/texk/gregorio/gregorio-src/UPGRADE.md
index 8de1f2c054b..207d8723f53 100644
--- a/Build/source/texk/gregorio/gregorio-src/UPGRADE.md
+++ b/Build/source/texk/gregorio/gregorio-src/UPGRADE.md
@@ -2,6 +2,16 @@
This file contains instructions to upgrade to a new release of Gregorio.
+## Unreleased
+
+### Vertical spacings
+
+High notes are now taken into account in vertical spacings. If you would like to come back to the old way, use `\grechangecount{additionaltopspacethreshold}{6}`. High notes also influence vertical placement of alt text. If you would like to come back to the old way, give a high value to `\grechangecount{additionaltopspacealtthreshold}{6}`.
+
+### Last line of score behavior
+
+`\grelooseness` is now `-1` by default. This should prevent orphaned syllable at end of score. If you prefer the old behavior, use `\def\grelooseness{\looseness}` befor including your scores.
+
## 4.1
### Initial handling
@@ -46,13 +56,28 @@ In the past, Gregorio handled the notes of an `<eu>` 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
@@ -93,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/Build/source/texk/gregorio/gregorio-src/configure.ac b/Build/source/texk/gregorio/gregorio-src/configure.ac
index 7dd60b219ee..6a8dde28bca 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 <http://www.gnu.org/licenses/>.
-AC_INIT([gregorio],[4.1.0],[https://github.com/gregorio-project/gregorio/issues],[gregorio],[http://gregorio-project.github.io/])
-FILENAME_VERSION="4_1_0"
+AC_INIT([gregorio],[4.1.1],[https://github.com/gregorio-project/gregorio/issues],[gregorio],[http://gregorio-project.github.io/])
+FILENAME_VERSION="4_1_1"
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 4d35d6c07e7..9c205f4bdf6 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
@@ -258,6 +258,14 @@ Macro to turn on or off scaling with the staff size for a particular distance.
\textbf{Nota bene:} This macro also can be used to change whether or not the staff line thickness scales with the staff size by specifying \texttt{stafflinefactor} for the first argument.
+\macroname{\textbackslash grechangecount}{\{\#1\}\{\#2\}}{gregoriotex-spaces.tex}
+Macro to change one of Gregorio\TeX’s counts (numeric values).
+
+\begin{argtable}
+ \#1 & string & The name of the count to be changed. See \nameref{counts} below.\\
+ \#2 & integer & The new value.\\
+\end{argtable}
+
\macroname{\textbackslash greloadspaceconf}{\{\#1\}}{gregoriotex-spaces.tex}
Macro to load a space configuration file. Space configuration file names have the format \verb=gsp-identifier.tex= and must be in the same directory as your project or in your texmf directory.
@@ -779,6 +787,8 @@ Sets the number of lines the score initial requires.
\#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.
@@ -812,6 +822,14 @@ You can also define your own languages in \texttt{gregorio-vowels.dat}. If you
Finally, in cases where you want some sort of exceptional alignment, you can force Gregorio to consider a particular part of the syllable to be the ``vowel'' by enclosing it in curly braces (``\{'' and ``\}'') in your gabc file. Curly braces only affect alignment when using vowel centering. Syllable centering will always use the entire syllable, and firstletter centering will always use the first character of the syllable --- regardless of curly braces in the gabc file.
+\macroname{\textbackslash gresetgabcforcecenters}{\{\#1\}}{gregoriotex-syllable.tex}
+Macro to determine whether a forced center (\ie, one specified by curly braces (``\{'' and ``\}'') in your gabc file) should influence the alignment of that syllable when \texttt{syllable} and \texttt{firstletter} alignments are in effect.
+
+\begin{argtable}
+ \#1 & \texttt{allow} & Forced centers in gabc are allowed to influence the syllable alignment (default).\\
+ & \texttt{prohibit} & Forced centers in gabc do not influence the syllable alignment.\\
+\end{argtable}
+
\macroname{\textbackslash gresettranslationcentering}{\{\#1\}}{gregoriotex-main.tex}
Macro to specify how the translation text should be aligned with it respective syllable text.
@@ -1127,6 +1145,26 @@ Macro to set the font to be used for the ancient notation.
\#2 & integer & point size at which the font should be loaded\\
\end{argtable}
+\subsection{Counts}\label{counts}
+
+Each of the following counts controls some aspect of the configuration of the Gregorio\TeX\ score. They are changed using \verb=\grechangecount=, documented above.
+
+\macroname{additionaltopspacethreshold}{}{gsp-default.tex}
+
+The threshold above which we start accounting notes above lines for additional
+vertical space. For instance with a threshold of \texttt{2}, notes with a pitch
+of \texttt{k} and \texttt{l} will not interfere with the space above lines.
+Set it to a high value if you don't want high notes to interfere with space
+above lines.
+
+Default: \texttt{2}
+
+\macroname{additionaltopspacealtthreshold}{}{gsp-default.tex}
+
+Same as \texttt{additionaltopspacethreshold} but setting the threshold for
+notes taken into account with above lines text vertical placement.
+
+Default: \texttt{0}
\subsection{Distances}\label{distances}
@@ -1708,6 +1746,11 @@ Penalty to force a line break.
Default: $-10001$
+\macroname{\textbackslash grefinalpenalty}{}{gsp-default.tex}
+The penalty applied after the final element of a score.
+
+Default: $0$
+
\macroname{\textbackslash grelooseness}{}{gsp-default.tex}
The \TeX\ looseness within a score.
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 fc9ac7e7938..c61e16809bd 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
@@ -170,11 +170,12 @@ defined and re-defined by the \verb=\gresetgregoriofont= macro.
\macroname{\textbackslash GreCP...}{}{gregoriotex-main.tex}
A class of macros which point to the individual characters in a Gregoiro\TeX\ compatible font. This class of macros is dynamically mapped from the glyph names embedded in the \texttt{ttf} file via a Lua script to ensure that the code points match up with the installed font.
-\macroname{\textbackslash GreCustos}{\#1}{gregoriotex-signs.tex}
+\macroname{\textbackslash GreCustos}{\#1\#2}{gregoriotex-signs.tex}
Typesets a custos.
\begin{argtable}
\#1 & integer & Height number of custos.\\
+ \#2 & integer & Indicate if the custo is the last of the score.\\
\end{argtable}
\macroname{\textbackslash GreDagger}{}{gregoriotex-symbols.tex}
@@ -465,7 +466,7 @@ Macro to typeset an horizontal episema.
flexus.\\
\#4 & \texttt{0} & an horizontal episema\\
& \texttt{1} & an horizontal episema under a note\\
- & \texttt{2} & a line at the top\\
+ & \texttt{2} & a line at the top\\
& \texttt{3} & a line at the bottom\\
\#5 & \texttt{f} & a normal episema\\
& \texttt{l} & a small episema aligned left\\
@@ -558,6 +559,15 @@ Macro to set \verb=\gre@lastoflinecount= to 1 (\ie, mark that this syllable is t
\macroname{\textbackslash GreLastOfScore}{}{gregoriotex-main.tex}
Macro to mark the syllable as the last of the score.
+\macroname{\textbackslash GreLastSyllableBeforeEUOUAE}{\#1\#2}{gregoriotex-syllable.tex}
+Indicates that this syllable is the last syllable before a EUOUAE block.
+
+\begin{argtable}
+ \#1 & integer & The identifier of the EUOUAE block.\\
+ \#2 & \texttt{0} & There is no line break between this syllable and the EUOUAE block.\\
+ & \texttt{1} & There is a line break between this syllable and the beginning of the EUOUAE block.\\
+\end{argtable}
+
\macroname{\textbackslash GreLinea}{\#1\#2\#3}{gregoriotex-signs.tex}
Macro for typesetting a linea.
@@ -628,11 +638,13 @@ where this macro is called.
\#1 & integer & Height number of the custos.\\
\end{argtable}
-\macroname{\textbackslash GreNextSyllableBeginsEUOUAE}{\#1}{gregoriotex-syllable.tex}
+\macroname{\textbackslash GreNextSyllableBeginsEUOUAE}{\#1\#2}{gregoriotex-syllable.tex}
Indicates that the syllable which follows begins a EUOUAE block.
\begin{argtable}
\#1 & integer & The identifier of the EUOUAE block.\\
+ \#2 & \texttt{0} & There is no line break between this syllable and the EUOUAE block.\\
+ & \texttt{1} & There is a line break between this syllable and the beginning of the EUOUAE block.\\
\end{argtable}
\macroname{\textbackslash GreOriscusCavum}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex}
@@ -1089,6 +1101,13 @@ Macro which formats the mode in roman or arabic numerals according to the approp
\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.
+\macroname{\textbackslash GreGABCForceCenters}{}{gregoriotex-syllable.tex}
+Macro inserted into \verb=\GreSyllable= and \verb=\GreBarSyllable= to indicate that the center of the of the current syllable was forced in the gabc with curly braces (``\{'' and ``\}'').
+
+\macroname{\textbackslash GreGABCNextForceCenters}{}{gregoriotex-syllable.tex}
+Macro inserted into \verb=\GreSyllable= and \verb=\GreBarSyllable= to indicate that the center of the of the next syllable was forced in the gabc with curly braces (``\{'' and ``\}'').
+
+
%%% 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 d965ab77b08..b051a84388f 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
@@ -1604,6 +1604,21 @@ Boolean to disable the printing of vertical episemata.
\macroname{\textbackslash ifgre@lastendswithmorasave}{}{gregoriotex-syllable.tex}
Boolean for saving \verb=\ifgre@lastendswithmora= for later restoration.
+\macroname{\textbackslash gre@lasteuouaeindex}{}{gregoriotex-main.tex}
+Count which keeps track of the most recent euouae area.
+
+\macroname{\textbackslash ifgre@firstin@euouae}{}{gregoriotex-main.tex}
+Boolean indicating we're dealing with the first syllable in an euouae area.
+
+\macroname{\textbackslash ifgre@gabcforcecenters}{}{gregoriotex-syllable.tex}
+Boolean for determining whether forced centers in gabc are allowed to determine syllable alignment in \texttt{syllable} and \texttt{firstletter} alignment modes.
+
+\macroname{\textbackslash ifgre@forcedcentering}{}{gregoriotex-syllable.tex}
+Boolean indicating that the current syllable had a forced center in the gabc which is to be respected.
+
+\macroname{\textbackslash ifgre@nextforcedcentering}{}{gregoriotex-syllable.tex}
+Boolean indicating that the next syllable had a forced center in the gabc which is to be respected.
+
\subsection{Boxes}
@@ -1693,6 +1708,9 @@ Dimension representing extra space below the staff needed for low notes.
\macroname{\textbackslash gre@dimen@additionaltopspace}{}{gregoriotex-spaces.tex}
Dimension representing extra space above the staff needed for high notes.
+\macroname{\textbackslash gre@dimen@additionaltopspacealt}{}{gregoriotex-spaces.tex}
+Dimension representing extra space above the staff needed for above lines text.
+
\macroname{\textbackslash gre@dimen@textlower}{}{gregoriotex-spaces.tex}
Dimension representing the height of the separation between the 0th
line (which is invisible except for notes in the a or b position) and
diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0.pdf b/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_1.pdf
index e1bfea94b8c..26951a82751 100644
--- a/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0.pdf
+++ b/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_1.pdf
Binary files differ
diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0.pdf b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_1.pdf
index 112a44ea395..d5ac475bef3 100644
--- a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0.pdf
+++ b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_1.pdf
Binary files differ
diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.tex b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.tex
index 9ea0d67445a..3782c9232dc 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}, 1 March 2016 %% PARSE_VERSION_DATE
+ \large Version \textbf{4.1.1}, 10 March 2016 %% PARSE_VERSION_DATE
\vspace{1.5cm}
\end{center}
diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c
index b352627d418..c4704c95811 100644
--- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c
+++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c
@@ -287,7 +287,7 @@ static bool check_score_integrity(gregorio_score *score_to_check)
} else if (ch->cos.s.style == ST_ELISION) {
gregorio_message(
_("score initial may not be in an elision"),
- "rebuild_characters", VERBOSITY_ERROR, 0);
+ "check_score_integrity", VERBOSITY_ERROR, 0);
break;
}
}
@@ -447,8 +447,7 @@ static void rebuild_score_characters(void)
{
if (score->first_syllable) {
gregorio_syllable *syllable;
- /* leave the first syllable text untouched at this time */
- for (syllable = score->first_syllable->next_syllable; syllable;
+ for (syllable = score->first_syllable; syllable;
syllable = syllable->next_syllable) {
const gregorio_character *t;
@@ -456,11 +455,17 @@ static void rebuild_score_characters(void)
gregorio_center_determination center = CENTER_NOT_DETERMINED;
for (t = syllable->text; t; t = t->next_character) {
if (!t->is_character && t->cos.s.style == ST_FORCED_CENTER) {
+ syllable->forced_center = true;
center = CENTER_FULLY_DETERMINED;
break;
}
}
+ if (syllable == score->first_syllable) {
+ /* leave the first syllable text untouched at this time */
+ continue;
+ }
+
gregorio_rebuild_characters(&(syllable->text), center, false);
if (syllable->first_word) {
@@ -811,7 +816,7 @@ static void gabc_y_add_notes(char *notes, YYLTYPE loc) {
}
}
-#line 815 "gabc/gabc-score-determination-y.c" /* yacc.c:339 */
+#line 820 "gabc/gabc-score-determination-y.c" /* yacc.c:339 */
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
@@ -996,7 +1001,7 @@ int gabc_score_determination_parse (void);
/* Copy the second part of user declarations. */
-#line 1000 "gabc/gabc-score-determination-y.c" /* yacc.c:358 */
+#line 1005 "gabc/gabc-score-determination-y.c" /* yacc.c:358 */
#ifdef short
# undef short
@@ -1301,15 +1306,15 @@ static const yytype_uint8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 777, 777, 781, 786, 787, 791, 795, 801, 806,
- 815, 821, 826, 831, 836, 841, 846, 854, 862, 872,
- 881, 886, 890, 895, 896, 900, 905, 911, 922, 926,
- 934, 935, 936, 940, 943, 946, 949, 952, 955, 958,
- 961, 964, 967, 976, 979, 982, 985, 988, 991, 994,
- 997, 1000, 1003, 1012, 1015, 1021, 1024, 1030, 1031, 1034,
- 1035, 1036, 1037, 1041, 1044, 1049, 1050, 1051, 1055, 1061,
- 1064, 1070, 1076, 1081, 1089, 1092, 1101, 1104, 1110, 1111,
- 1114, 1115
+ 0, 782, 782, 786, 791, 792, 796, 800, 806, 811,
+ 820, 826, 831, 836, 841, 846, 851, 859, 867, 877,
+ 886, 891, 895, 900, 901, 905, 910, 916, 927, 931,
+ 939, 940, 941, 945, 948, 951, 954, 957, 960, 963,
+ 966, 969, 972, 981, 984, 987, 990, 993, 996, 999,
+ 1002, 1005, 1008, 1017, 1020, 1026, 1029, 1035, 1036, 1039,
+ 1040, 1041, 1042, 1046, 1049, 1054, 1055, 1056, 1060, 1066,
+ 1069, 1075, 1081, 1086, 1094, 1097, 1106, 1109, 1115, 1116,
+ 1119, 1120
};
#endif
@@ -2091,7 +2096,7 @@ yyparse (void)
yychar = YYEMPTY; /* Cause a token to be read. */
/* User initialization code. */
-#line 741 "gabc/gabc-score-determination.y" /* yacc.c:1429 */
+#line 746 "gabc/gabc-score-determination.y" /* yacc.c:1429 */
{
yylloc.first_line = 1;
yylloc.first_column = 0;
@@ -2101,7 +2106,7 @@ yyparse (void)
yylloc.last_offset = 0;
}
-#line 2105 "gabc/gabc-score-determination-y.c" /* yacc.c:1429 */
+#line 2110 "gabc/gabc-score-determination-y.c" /* yacc.c:1429 */
yylsp[0] = yylloc;
goto yysetstate;
@@ -2288,41 +2293,41 @@ yyreduce:
switch (yyn)
{
case 3:
-#line 781 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 786 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
end_definitions();
}
-#line 2296 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2301 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 6:
-#line 791 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 796 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
(yyval).text = (yyvsp[-1]).text;
}
-#line 2304 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2309 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 7:
-#line 795 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 800 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
(yyval).text = NULL;
}
-#line 2312 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2317 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 8:
-#line 801 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 806 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
/* these definitions are not passed through */
free(macros[(yyvsp[-1]).character - '0']);
macros[(yyvsp[-1]).character - '0'] = (yyvsp[0]).text;
}
-#line 2322 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2327 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 9:
-#line 806 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 811 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
if ((yyvsp[0]).text == NULL) {
gregorio_message("name can't be empty","det_score",
@@ -2332,72 +2337,72 @@ yyreduce:
gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text);
score->name = (yyvsp[0]).text;
}
-#line 2336 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2341 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 10:
-#line 815 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 820 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
check_multiple("language", got_language);
gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text);
gregorio_set_centering_language((yyvsp[0]).text);
got_language = true;
}
-#line 2347 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2352 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 11:
-#line 821 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 826 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
check_multiple("gabc-copyright", score->gabc_copyright != NULL);
gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text);
score->gabc_copyright = (yyvsp[0]).text;
}
-#line 2357 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2362 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 12:
-#line 826 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 831 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
check_multiple("score_copyright", score->score_copyright != NULL);
gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text);
score->score_copyright = (yyvsp[0]).text;
}
-#line 2367 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2372 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 13:
-#line 831 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 836 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
check_multiple("mode", score->mode != 0);
gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text);
score->mode = (yyvsp[0]).text;
}
-#line 2377 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2382 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 14:
-#line 836 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 841 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
check_multiple("mode-modifier", score->mode_modifier != NULL);
gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text);
score->mode_modifier = (yyvsp[0]).text;
}
-#line 2387 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2392 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 15:
-#line 841 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 846 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
check_multiple("mode-differentia", score->mode_differentia != NULL);
gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text);
score->mode_differentia = (yyvsp[0]).text;
}
-#line 2397 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2402 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 16:
-#line 846 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 851 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
check_multiple("staff-lines", got_staff_lines);
if ((yyvsp[0]).text) {
@@ -2406,11 +2411,11 @@ yyreduce:
got_staff_lines = true;
}
}
-#line 2410 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2415 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 17:
-#line 854 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 859 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
check_multiple("nabc lines", score->nabc_lines != 0);
if ((yyvsp[0]).text) {
@@ -2419,11 +2424,11 @@ yyreduce:
score->nabc_lines=nabc_lines;
}
}
-#line 2423 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2428 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 18:
-#line 862 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 867 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
if ((yyvsp[0]).text) {
/* DEPRECATED by 4.1 */
@@ -2434,11 +2439,11 @@ yyreduce:
free((yyvsp[0]).text);
}
}
-#line 2438 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2443 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 19:
-#line 872 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 877 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
if (score->annotation [MAX_ANNOTATIONS - 1]) {
gregorio_messagef("det_score", VERBOSITY_WARNING, 0,
@@ -2448,59 +2453,59 @@ yyreduce:
gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text);
gregorio_set_score_annotation(score, (yyvsp[0]).text);
}
-#line 2452 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2457 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 20:
-#line 881 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 886 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
check_multiple("author", score->author != NULL);
gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text);
score->author = (yyvsp[0]).text;
}
-#line 2462 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2467 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 21:
-#line 886 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 891 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text);
score->legacy_oriscus_orientation = (strcmp((yyvsp[0]).text, "legacy") == 0);
}
-#line 2471 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2476 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 22:
-#line 890 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 895 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text);
}
-#line 2479 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2484 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 25:
-#line 900 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 905 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gabc_y_add_notes((yyvsp[-1]).text, (yylsp[-1]));
free((yyvsp[-1]).text);
nabc_state=0;
}
-#line 2489 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2494 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 26:
-#line 905 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 910 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gabc_y_add_notes((yyvsp[-1]).text, (yylsp[-1]));
free((yyvsp[-1]).text);
nabc_state=0;
update_position_with_space();
}
-#line 2500 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2505 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 27:
-#line 911 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 916 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
if (!nabc_lines) {
gregorio_message(_("You used character \"|\" in gabc without "
@@ -2512,294 +2517,294 @@ yyreduce:
free((yyvsp[-1]).text);
nabc_state = (nabc_state + 1) % (nabc_lines+1);
}
-#line 2516 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2521 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 28:
-#line 922 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 927 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
elements[voice]=NULL;
nabc_state=0;
}
-#line 2525 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2530 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 29:
-#line 926 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 931 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
elements[voice]=NULL;
nabc_state=0;
update_position_with_space();
}
-#line 2535 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2540 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 33:
-#line 940 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 945 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_style(ST_ITALIC);
}
-#line 2543 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2548 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 34:
-#line 943 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 948 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_style(ST_TT);
}
-#line 2551 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2556 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 35:
-#line 946 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 951 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_style(ST_UNDERLINED);
}
-#line 2559 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2564 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 36:
-#line 949 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 954 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_style(ST_COLORED);
}
-#line 2567 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2572 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 37:
-#line 952 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 957 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_style(ST_BOLD);
}
-#line 2575 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2580 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 38:
-#line 955 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 960 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_style(ST_SMALL_CAPS);
}
-#line 2583 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2588 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 39:
-#line 958 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 963 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_style(ST_VERBATIM);
}
-#line 2591 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2596 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 40:
-#line 961 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 966 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_style(ST_SPECIAL_CHAR);
}
-#line 2599 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2604 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 41:
-#line 964 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 969 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_style(ST_ELISION);
}
-#line 2607 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2612 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 42:
-#line 967 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 972 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
if (!center_is_determined) {
gregorio_gabc_add_style(ST_FORCED_CENTER);
center_is_determined=CENTER_HALF_DETERMINED;
}
}
-#line 2618 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2623 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 43:
-#line 976 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 981 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_end_style(ST_ITALIC);
}
-#line 2626 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2631 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 44:
-#line 979 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 984 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_end_style(ST_TT);
}
-#line 2634 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2639 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 45:
-#line 982 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 987 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_end_style(ST_UNDERLINED);
}
-#line 2642 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2647 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 46:
-#line 985 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 990 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_end_style(ST_COLORED);
}
-#line 2650 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2655 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 47:
-#line 988 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 993 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_end_style(ST_BOLD);
}
-#line 2658 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2663 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 48:
-#line 991 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 996 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_end_style(ST_SMALL_CAPS);
}
-#line 2666 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2671 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 49:
-#line 994 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 999 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_end_style(ST_VERBATIM);
}
-#line 2674 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2679 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 50:
-#line 997 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1002 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_end_style(ST_SPECIAL_CHAR);
}
-#line 2682 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2687 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 51:
-#line 1000 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1005 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_end_style(ST_ELISION);
}
-#line 2690 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2695 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 52:
-#line 1003 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1008 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
if (center_is_determined==CENTER_HALF_DETERMINED) {
gregorio_gabc_end_style(ST_FORCED_CENTER);
center_is_determined=CENTER_FULLY_DETERMINED;
}
}
-#line 2701 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2706 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 53:
-#line 1012 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1017 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
euouae = EUOUAE_BEGINNING;
}
-#line 2709 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2714 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 54:
-#line 1015 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1020 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
euouae = EUOUAE_END;
}
-#line 2717 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2722 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 55:
-#line 1021 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1026 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
no_linebreak_area = NLBA_BEGINNING;
}
-#line 2725 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2730 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 56:
-#line 1024 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1029 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
no_linebreak_area = NLBA_END;
}
-#line 2733 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2738 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 58:
-#line 1031 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1036 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_text((yyvsp[0]).text);
}
-#line 2741 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2746 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 63:
-#line 1041 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1046 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_text(gregorio_strdup("-"));
}
-#line 2749 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2754 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 64:
-#line 1044 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1049 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_text(gregorio_strdup("-"));
}
-#line 2757 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2762 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 68:
-#line 1055 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1060 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
start_translation(TR_NORMAL);
}
-#line 2765 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2770 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 69:
-#line 1061 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1066 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
end_translation();
}
-#line 2773 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2778 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 70:
-#line 1064 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1069 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
start_translation(TR_WITH_CENTER_END);
}
-#line 2781 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2786 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 71:
-#line 1070 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1075 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
abovelinestext = (yyvsp[-1]).text;
}
-#line 2789 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2794 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 72:
-#line 1076 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1081 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
ready_characters();
first_text_character = current_character;
close_syllable(&(yylsp[-2]));
}
-#line 2799 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2804 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 73:
-#line 1081 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1086 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_style(ST_VERBATIM);
gregorio_gabc_add_text(gregorio_strdup("\\GreForceHyphen"));
@@ -2808,46 +2813,46 @@ yyreduce:
first_text_character = current_character;
close_syllable(&(yylsp[-3]));
}
-#line 2812 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2817 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 74:
-#line 1089 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1094 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
close_syllable(&(yylsp[-3]));
}
-#line 2820 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2825 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 75:
-#line 1092 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1097 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
gregorio_gabc_add_style(ST_VERBATIM);
gregorio_gabc_add_text(gregorio_strdup("\\GreForceHyphen"));
gregorio_gabc_end_style(ST_VERBATIM);
close_syllable(&(yylsp[-4]));
}
-#line 2831 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2836 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 76:
-#line 1101 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1106 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
close_syllable(NULL);
}
-#line 2839 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2844 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
case 77:
-#line 1104 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
+#line 1109 "gabc/gabc-score-determination.y" /* yacc.c:1646 */
{
close_syllable(NULL);
}
-#line 2847 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2852 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
break;
-#line 2851 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
+#line 2856 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y
index fb964071b07..0cd8db317fb 100644
--- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y
+++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y
@@ -213,7 +213,7 @@ static bool check_score_integrity(gregorio_score *score_to_check)
} else if (ch->cos.s.style == ST_ELISION) {
gregorio_message(
_("score initial may not be in an elision"),
- "rebuild_characters", VERBOSITY_ERROR, 0);
+ "check_score_integrity", VERBOSITY_ERROR, 0);
break;
}
}
@@ -373,8 +373,7 @@ static void rebuild_score_characters(void)
{
if (score->first_syllable) {
gregorio_syllable *syllable;
- /* leave the first syllable text untouched at this time */
- for (syllable = score->first_syllable->next_syllable; syllable;
+ for (syllable = score->first_syllable; syllable;
syllable = syllable->next_syllable) {
const gregorio_character *t;
@@ -382,11 +381,17 @@ static void rebuild_score_characters(void)
gregorio_center_determination center = CENTER_NOT_DETERMINED;
for (t = syllable->text; t; t = t->next_character) {
if (!t->is_character && t->cos.s.style == ST_FORCED_CENTER) {
+ syllable->forced_center = true;
center = CENTER_FULLY_DETERMINED;
break;
}
}
+ if (syllable == score->first_syllable) {
+ /* leave the first syllable text untouched at this time */
+ continue;
+ }
+
gregorio_rebuild_characters(&(syllable->text), center, false);
if (syllable->first_word) {
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 ad358da55d9..c221d903e39 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
@@ -2534,20 +2534,31 @@ static int gregoriotex_syllable_first_type(gregorio_syllable *syllable)
static __inline void write_low_choral_sign(FILE *const f,
const gregorio_note *const note, int special)
{
- fprintf(f, "\\GreLowChoralSign{%d}{%s%s%s}{%d}%%\n",
- pitch_value(note->u.note.pitch),
- note->choral_sign_is_nabc? "\\GreNABCChar{" : "",
- note->choral_sign, note->choral_sign_is_nabc? "}" : "", special);
+ if (note->choral_sign_is_nabc) {
+ fprintf(f, "\\GreLowChoralSign{%d}{\\GreNABCChar{",
+ pitch_value(note->u.note.pitch));
+ tex_escape_text(f, note->choral_sign);
+ fprintf(f, "}}{%d}%%\n", special);
+ } else {
+ fprintf(f, "\\GreLowChoralSign{%d}{%s}{%d}%%\n",
+ pitch_value(note->u.note.pitch), note->choral_sign,
+ special);
+ }
}
static __inline void write_high_choral_sign(FILE *const f,
const gregorio_note *const note, int pitch_offset)
{
- fprintf(f, "\\GreHighChoralSign{%d}{%s%s%s}{\\GreOCase%s}%%\n",
- pitch_value(note->u.note.pitch + pitch_offset),
- note->choral_sign_is_nabc? "\\GreNABCChar{" : "",
- note->choral_sign, note->choral_sign_is_nabc? "}" : "",
- note->gtex_offset_case);
+ if (note->choral_sign_is_nabc) {
+ fprintf(f, "\\GreHighChoralSign{%d}{\\GreNABCChar{",
+ pitch_value(note->u.note.pitch + pitch_offset));
+ tex_escape_text(f, note->choral_sign);
+ fprintf(f, "}}{\\GreOCase%s}%%\n", note->gtex_offset_case);
+ } else {
+ fprintf(f, "\\GreHighChoralSign{%d}{%s}{\\GreOCase%s}%%\n",
+ pitch_value(note->u.note.pitch + pitch_offset),
+ note->choral_sign, note->gtex_offset_case);
+ }
}
static void gregoriotex_write_choral_sign(FILE *f, gregorio_glyph *glyph,
@@ -3252,17 +3263,20 @@ static __inline void write_syllable_point_and_click(FILE *const f,
}
static void write_syllable_text(FILE *f, const char *const syllable_type,
- const gregorio_character *text, bool ignored __attribute__((unused)))
+ const bool forced_center, const gregorio_character *text,
+ const bool ignored __attribute__((unused)))
{
if (syllable_type != NULL) {
- fprintf(f, "%s{\\GreSetThisSyllable", syllable_type);
+ fprintf(f, "%s{%s\\GreSetThisSyllable", syllable_type,
+ forced_center? "\\GreGABCForceCenters" : "");
write_text(f, text);
fprintf(f, "}");
}
}
static void write_first_syllable_text(FILE *f, const char *const syllable_type,
- const gregorio_character *const text, bool end_of_word)
+ const bool forced_center, const gregorio_character *const text,
+ const bool end_of_word)
{
gregorio_not_null(syllable_type, write_first_syllable_text, return);
if (text == NULL) {
@@ -3273,13 +3287,8 @@ static void write_first_syllable_text(FILE *f, const char *const syllable_type,
const gregorio_character *t;
/* find out if there is a forced center -> has_forced_center */
- gregorio_center_determination center = CENTER_NOT_DETERMINED;
- for (t = text; t; t = t->next_character) {
- if (!t->is_character && t->cos.s.style == ST_FORCED_CENTER) {
- center = CENTER_FULLY_DETERMINED;
- break;
- }
- }
+ gregorio_center_determination center = forced_center?
+ CENTER_FULLY_DETERMINED : CENTER_NOT_DETERMINED;
gregorio_rebuild_first_syllable(&text_with_initial, false);
gregorio_rebuild_characters(&text_with_initial, center, false);
@@ -3289,7 +3298,8 @@ static void write_first_syllable_text(FILE *f, const char *const syllable_type,
gregorio_rebuild_characters(&text_without_initial, center, true);
gregorio_set_first_word(&text_without_initial);
- fprintf(f, "}{%s}{\\GreSetFirstSyllableText", syllable_type);
+ fprintf(f, "}{%s}{%s\\GreSetFirstSyllableText", syllable_type,
+ forced_center? "\\GreGABCForceCenters" : "");
fprintf(f, "{");
gregorio_write_first_letter_alignment_text(WTP_FIRST_SYLLABLE,
@@ -3340,49 +3350,73 @@ static void write_first_syllable_text(FILE *f, const char *const syllable_type,
}
static __inline void scan_syllable_for_eol(
- const gregorio_syllable *const syllable,
- bool *eol_forces_custos, bool *eol_forces_custos_on) {
+ const gregorio_syllable *const syllable, char *const eol_forces_custos)
+{
const gregorio_element *element;
if (syllable->elements) {
for (element = *(syllable->elements); element; element = element->next) {
if (element->type == GRE_END_OF_LINE) {
if (element->u.misc.unpitched.info.eol_forces_custos) {
- *eol_forces_custos = true;
- *eol_forces_custos_on =
- element->u.misc.unpitched.info.eol_forces_custos_on;
+ *eol_forces_custos = element->u.misc.unpitched.info
+ .eol_forces_custos_on? '1' : '0';
}
}
}
}
}
-static __inline void anticipate_event(FILE *f, gregorio_syllable *syllable) {
+/*
+ * euouae_follows will be
+ * - '\0' if no euouae follows
+ * - '0' if euouae follows with no intervening linebreak
+ * - '1' if euouae follows with an intervening linebreak
+ *
+ * eol_forces_custos will be
+ * - '\0' if no linebreak follows or doesn't force a custos
+ * - '0' if a linebreak follows and forces custos off
+ * - '1' if a linebreak follows and forces custos on
+ */
+static __inline void anticipate_event(gregorio_syllable *syllable,
+ char *const euouae_follows, char *const eol_forces_custos,
+ unsigned short *const next_euouae_id)
+{
static unsigned short euouae_id = 0;
- bool eol_forces_custos = false;
- bool eol_forces_custos_on = false;
+ bool has_intervening_linebreak = false;
+
+ *euouae_follows = '\0';
+ *eol_forces_custos = '\0';
+ *next_euouae_id = 0;
if (syllable->next_syllable) {
for (syllable = syllable->next_syllable;
syllable && syllable->elements && *(syllable->elements)
&& (*(syllable->elements))->type == GRE_END_OF_LINE;
syllable = syllable->next_syllable) {
+ has_intervening_linebreak = true;
/* we are at an end-of-line, so check if custos is forced */
- scan_syllable_for_eol(syllable, &eol_forces_custos,
- &eol_forces_custos_on);
+ scan_syllable_for_eol(syllable, eol_forces_custos);
}
if (syllable) {
- scan_syllable_for_eol(syllable, &eol_forces_custos,
- &eol_forces_custos_on);
+ scan_syllable_for_eol(syllable, eol_forces_custos);
if (syllable->euouae == EUOUAE_BEGINNING) {
- syllable->euouae_id = ++euouae_id;
- fprintf(f, "%%\n\\GreNextSyllableBeginsEUOUAE{%hu}%%\n", euouae_id);
+ *next_euouae_id = syllable->euouae_id = ++euouae_id;
+ *euouae_follows = has_intervening_linebreak? '1' : '0';
}
}
- if (eol_forces_custos) {
- fprintf(f, "%%\n\\GreUpcomingNewLineForcesCustos{%c}%%\n",
- eol_forces_custos_on? '1' : '0');
- }
+ }
+}
+
+static __inline void write_anticipated_event(FILE *f, const char euouae_follows,
+ const char eol_forces_custos, const short next_euouae_id)
+{
+ if (euouae_follows) {
+ fprintf(f, "%%\n\\GreNextSyllableBeginsEUOUAE{%hu}{%c}%%\n",
+ next_euouae_id, euouae_follows);
+ }
+ if (eol_forces_custos) {
+ fprintf(f, "%%\n\\GreUpcomingNewLineForcesCustos{%c}%%\n",
+ eol_forces_custos);
}
}
@@ -3403,13 +3437,17 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable,
unsigned char first_of_disc, gregoriotex_status *const status,
const gregorio_score *const score,
void (*const write_this_syllable_text)
- (FILE *, const char *, const gregorio_character *, bool))
+ (FILE *, const char *, bool, const gregorio_character *, bool))
{
gregorio_element *clef_change_element = NULL, *element;
const char *syllable_type = NULL;
- bool event_anticipated = false;
+ bool anticipated_event_written = false;
bool end_of_word;
bool end_of_line;
+ char euouae_follows;
+ char eol_forces_custos;
+ unsigned short next_euouae_id;
+
gregorio_not_null(syllable, write_syllable, return);
end_of_word = syllable->position == WORD_END
|| syllable->position == WORD_ONE_SYLLABLE || !syllable->text
@@ -3438,7 +3476,8 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable,
} else {
fprintf(f, "%%\n%%\n\\GreNewLine %%\n%%\n%%\n");
}
- write_this_syllable_text(f, NULL, syllable->text, end_of_word);
+ write_this_syllable_text(f, NULL, syllable->forced_center,
+ syllable->text, end_of_word);
return;
}
/*
@@ -3465,7 +3504,8 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable,
write_syllable(f, syllable, 2, status, score,
write_syllable_text);
fprintf(f, "}%%\n");
- write_this_syllable_text(f, NULL, syllable->text, end_of_word);
+ write_this_syllable_text(f, NULL, syllable->forced_center,
+ syllable->text, end_of_word);
return;
}
}
@@ -3477,16 +3517,16 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable,
&& (syllable->elements)[0]->u.misc.unpitched.info.bar
== B_DIVISIO_FINALIS) {
handle_final_bar(f, "DivisioFinalis", syllable);
- write_this_syllable_text(f, NULL, syllable->text,
- end_of_word);
+ write_this_syllable_text(f, NULL, syllable->forced_center,
+ syllable->text, end_of_word);
return;
}
if (!syllable->next_syllable && !syllable->text
&& (syllable->elements)[0]->u.misc.unpitched.info.bar
== B_DIVISIO_MAIOR) {
handle_final_bar(f, "DivisioMaior", syllable);
- write_this_syllable_text(f, NULL, syllable->text,
- end_of_word);
+ write_this_syllable_text(f, NULL, syllable->forced_center,
+ syllable->text, end_of_word);
return;
}
}
@@ -3505,7 +3545,8 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable,
syllable->next_syllable? syllable->next_syllable->text : NULL);
syllable_type = "\\GreNoNoteSyllable";
}
- write_this_syllable_text(f, syllable_type, syllable->text, end_of_word);
+ write_this_syllable_text(f, syllable_type, syllable->forced_center,
+ syllable->text, end_of_word);
fprintf(f, "{}{\\Gre%s}", syllable->first_word ? "FirstWord" : "Unstyled");
if (end_of_word) {
fprintf(f, "{1}");
@@ -3513,11 +3554,18 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable,
fprintf(f, "{0}");
}
end_of_line = is_last_of_line(syllable);
+ anticipate_event(syllable, &euouae_follows, &eol_forces_custos,
+ &next_euouae_id);
if (syllable->next_syllable) {
- fprintf(f, "{\\GreSetNextSyllable");
+ fprintf(f, "{%s\\GreSetNextSyllable",
+ syllable->next_syllable->forced_center?
+ "\\GreGABCNextForceCenters" : "");
write_text(f, syllable->next_syllable->text);
if (end_of_line) {
fprintf(f, "\\GreLastOfLine");
+ } else if (euouae_follows) {
+ fprintf(f, "\\GreLastSyllableBeforeEUOUAE{%hu}{%c}",
+ next_euouae_id, euouae_follows);
}
fprintf(f, "}{");
write_syllable_point_and_click(f, syllable, status);
@@ -3557,8 +3605,9 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable,
size_t i;
for (i = 0; i < element->nabc_lines; i++) {
if (element->nabc[i]) {
- fprintf(f, "\\GreNABCNeumes{%d}{%s}%%\n", (int)(i+1),
- element->nabc[i]);
+ fprintf(f, "\\GreNABCNeumes{%d}{", (int)(i+1));
+ tex_escape_text(f, element->nabc[i]);
+ fprintf(f, "}%%\n");
}
}
}
@@ -3670,8 +3719,9 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable,
case GRE_END_OF_LINE:
if (!element->next) {
- anticipate_event(f, syllable);
- event_anticipated = true;
+ write_anticipated_event(f, euouae_follows,
+ eol_forces_custos, next_euouae_id);
+ anticipated_event_written = true;
}
/* here we suppose we don't have two linebreaks in the same
* syllable */
@@ -3698,8 +3748,9 @@ static void write_syllable(FILE *f, gregorio_syllable *syllable,
}
}
}
- if (!event_anticipated) {
- anticipate_event(f, syllable);
+ if (!anticipated_event_written) {
+ write_anticipated_event(f, euouae_follows, eol_forces_custos,
+ next_euouae_id);
}
fprintf(f, "}%%\n");
if (syllable->position == WORD_END
diff --git a/Build/source/texk/gregorio/gregorio-src/src/struct.h b/Build/source/texk/gregorio/gregorio-src/src/struct.h
index 636c0082022..2511375dfba 100644
--- a/Build/source/texk/gregorio/gregorio-src/src/struct.h
+++ b/Build/source/texk/gregorio/gregorio-src/src/struct.h
@@ -652,6 +652,7 @@ typedef struct gregorio_syllable {
* and i let you gess what are WORD_MIDDLE and WORD_END. */
ENUM_BITFIELD(gregorio_word_position) position:3;
bool first_word:1;
+ bool forced_center:1;
} gregorio_syllable;
/* Stores a header in a singly-linked list */
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 beb9e29452b..6970073a7a4 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,30
-PRODUCTVERSION 4,1,0,30
+FILEVERSION 4,1,1,30
+PRODUCTVERSION 4,1,1,30
BEGIN
BLOCK "StringFileInfo"
BEGIN
@@ -9,12 +9,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Gregorio project"
VALUE "FileDescription", "Gregorio"
- VALUE "FileVersion", "4.1.0"
+ VALUE "FileVersion", "4.1.1"
VALUE "InternalName", "gregorio"
VALUE "LegalCopyright", "See COPYING in the installation directory."
VALUE "OriginalFilename", "gregorio.exe"
VALUE "ProductName", "Gregorio"
- VALUE "ProductVersion", "4.1.0"
+ VALUE "ProductVersion", "4.1.1"
END
END
diff --git a/Build/source/texk/gregorio/version.ac b/Build/source/texk/gregorio/version.ac
index 0b6b99a99a2..ee9117fd91f 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])
+m4_define([gregorio_version], [4.1.1])