]> git.donarmstrong.com Git - lilypond.git/blob - ly/engraver-init.ly
* scm/output-lib.scm (shift-right-at-line-begin): new function:
[lilypond.git] / ly / engraver-init.ly
1 \version "1.9.8"
2
3
4 %
5 % setup for Request->Element conversion. Guru-only
6 %
7
8 \translator {
9         \type "Engraver_group_engraver"
10         \name Staff
11
12         \description "Handles clefs, bar lines, keys, accidentals.  It can contain
13 @code{Voice} contexts."
14
15         
16         \consists "Output_property_engraver"    
17         
18         \consists "Bar_engraver"
19 % Bar_engraver must be first so default bars aren't overwritten
20 % with empty ones.
21         \consists "Font_size_engraver"
22
23 %       \consists "Repeat_engraver"
24         \consists "Volta_engraver"
25         \consists "Separating_line_group_engraver"      
26         SeparatingGroupSpanner \override #'spacing-procedure
27           =  #Separating_group_spanner::set_spacing_rods_and_seqs
28         \consists "Dot_column_engraver"
29
30         % perhaps move to Voice context?
31         \consists "Ottava_spanner_engraver"
32         \consists "Clef_engraver"
33         \consists "Key_engraver"
34         \consists "Time_signature_engraver"
35         \consists "Staff_symbol_engraver"
36         \consists "Collision_engraver"
37         \consists "Rest_collision_engraver"
38         \consists "Accidental_engraver"
39         \consists "Piano_pedal_engraver"
40         \consists "Instrument_name_engraver"
41         \consists "Grob_pq_engraver"
42         \consists "Forbid_line_break_engraver"
43         \consists "String_number_engraver"
44         \consistsend "Axis_group_engraver"
45
46         minimumVerticalExtent = #'(-6 . 6)
47         extraVerticalExtent = ##f
48         verticalExtent = ##f 
49         localKeySignature = #'()
50
51         % explicitly set instrument, so we don't get 
52         % weird effects when doing instrument names for
53         % piano staves
54
55         instrument = #'()
56         instr = #'()
57           
58         \accepts "Voice"
59 }
60
61
62 \translator {
63         \type Engraver_group_engraver
64         \consists "Axis_group_engraver"
65         minimumVerticalExtent = ##f
66         extraVerticalExtent = ##f
67         verticalExtent = ##f 
68         localKeySignature = #'()
69
70         \accepts Staff
71         \name StaffContainer
72 }
73
74 \translator {
75         \type "Engraver_group_engraver"
76         \name InnerChoirStaff
77         \consists "System_start_delimiter_engraver"
78         systemStartDelimiter = #'SystemStartBracket
79         localKeySignature = #'()
80
81         \accepts "Staff"
82         \accepts "RhythmicStaff"
83         \accepts "GrandStaff"
84         \accepts "PianoStaff"
85         \accepts "Lyrics"
86         \accepts "ChordNames"
87 }
88
89 \translator {
90         \InnerChoirStaffContext
91         \name ChoirStaff
92         
93         \description "Identical to @code{StaffGroup} except that the
94     contained staves are not connected vertically."
95         
96         \accepts "InnerChoirStaff"
97         \accepts "InnerStaffGroup"
98 }
99
100
101 \translator{
102         \type "Engraver_group_engraver"
103         
104         \consists "Output_property_engraver"    
105
106 \description  "
107     A context like @code{Staff} but for printing rhythms.  Pitches are
108     ignored; the notes are printed on one line.  
109 "
110         minimumVerticalExtent = ##f
111         extraVerticalExtent = ##f
112         verticalExtent = ##f 
113         localKeySignature = #'()
114
115         \consists "Pitch_squash_engraver"
116         \consists "Separating_line_group_engraver"      
117         \name RhythmicStaff
118         \alias "Staff"
119         
120         BarLine \override #'bar-size = #4
121         VoltaBracket \override #'minimum-space =  #15  % urg, in \pt
122         VoltaBracket \override #'padding =  #5  % urg, in \pt
123         StaffSymbol \override #'line-count = #1 
124
125         Stem \override #'neutral-direction = #1
126         Beam \override #'neutral-direction = #1         
127 %       \consists "Repeat_engraver"
128         \consists "Dot_column_engraver"
129         \consists "Volta_engraver"
130         \consists "Bar_engraver"
131         \consists "Time_signature_engraver"
132         \consists "Staff_symbol_engraver"
133         \consists "Instrument_name_engraver"
134         \consistsend "Axis_group_engraver"
135         \accepts "Voice"
136 }
137
138
139 \translator {
140         \type "Engraver_group_engraver"
141         \name Voice
142
143 \description "
144     Corresponds to a voice on a staff.  This context handles the
145     conversion of dynamic signs, stems, beams, super- and subscripts,
146     slurs, ties, and rests.
147
148     You have to instantiate this explicitly if you want to have
149     multiple voices on the same staff."
150
151         localKeySignature = #'()
152         \consists "Font_size_engraver"
153         
154         % must come before all
155         \consists "Voice_devnull_engraver"
156         \consists "Output_property_engraver"    
157         \consists "Arpeggio_engraver"
158         \consists "Multi_measure_rest_engraver"
159         \consists "Text_spanner_engraver"
160         \consists "Grob_pq_engraver"
161
162         \consists "Note_head_line_engraver"
163         \consists "Glissando_engraver"
164         \consists "Ligature_bracket_engraver"
165         \consists "Breathing_sign_engraver"
166         % \consists "Rest_engraver"
167         \consists "Stem_engraver"
168         \consists "Beam_engraver"
169         \consists "Grace_beam_engraver"
170         \consists "Auto_beam_engraver"
171         \consists "New_fingering_engraver"
172         \consists "Chord_tremolo_engraver"
173         \consists "Percent_repeat_engraver"
174         \consists "Slash_repeat_engraver"
175         \consists "Melisma_engraver"
176
177 %{
178  Must come before text_engraver, but after note_column engraver.
179
180 %}
181         \consists "Text_engraver"
182         \consists "Dynamic_engraver"
183         \consists "Fingering_engraver"
184
185         \consists "Script_engraver"
186         \consists "Script_column_engraver"
187         \consists "Rhythmic_column_engraver"
188         \consists "Phrasing_slur_engraver"
189         \consists "Cluster_spanner_engraver"
190         \consists "Slur_engraver"
191         \consists "Tie_engraver"
192         \consists "Tuplet_engraver"
193         \consists "A2_engraver"
194
195         \consists "Skip_event_swallow_translator"
196         \accepts Thread % bug if you leave out this!
197 }
198
199 \translator{
200         \type Engraver_group_engraver
201         \name Thread
202         localKeySignature = #'()
203 \description "
204     Handles note heads, and is contained in the Voice context.  You
205     have to instantiate this explicitly if you want to adjust the
206     style of individual note heads.
207 "
208         \consists "Font_size_engraver"  
209         \consists "Thread_devnull_engraver"
210         \consists "Note_heads_engraver"
211         \consists "Rest_engraver"
212
213         % why here ? 
214         \consists "Output_property_engraver"    
215 }
216
217
218 \translator{
219         \type "Engraver_group_engraver"
220         \name GrandStaff
221         localKeySignature = #'()
222         
223         \description " A group of staffs, with a brace on the left
224     side, grouping the staves together.  The bar lines of the
225     contained staves are connected vertically.  "
226
227         \consists "Span_bar_engraver"
228         \consists "Span_arpeggio_engraver"
229         \consists "System_start_delimiter_engraver"
230         systemStartDelimiter = #'SystemStartBrace
231
232         \accepts "Staff"
233 }
234
235 \translator{
236         \GrandStaffContext
237         \name "PianoStaff"
238         \alias "GrandStaff"
239 \description "
240     Just like @code{GrandStaff} but with @code{minVerticalAlign} set
241     equal to @code{maxVerticalAlign} so that interstaff beaming and
242     slurring can be used."
243         verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
244         VerticalAlignment \override #'forced-distance = #12
245         VerticalAlignment \override #'self-alignment-Y = #0
246
247         \consists "Vertical_align_engraver"
248         \consists "Instrument_name_engraver"
249         
250         instrument = #'()
251         instr = #'()
252         
253 %       \consistsend "Axis_group_engraver"
254 }
255
256 \translator {
257         \type "Engraver_group_engraver"
258         \name InnerStaffGroup
259         localKeySignature = #'()
260
261         \consists "Span_bar_engraver"
262         \consists "Span_arpeggio_engraver"
263         \consists "Output_property_engraver"    
264         systemStartDelimiter = #'SystemStartBracket
265
266         \consists "System_start_delimiter_engraver"
267         \accepts "Staff"
268         \accepts "RhythmicStaff"
269         \accepts "GrandStaff"
270         \accepts "PianoStaff"
271         \accepts "TabStaff"     
272         \accepts "Lyrics"
273         \accepts "ChordNames"
274 }
275
276 \translator {
277         \InnerStaffGroupContext
278         \name StaffGroup
279         
280         \description
281
282         " Groups staffs while adding a bracket on the left side,
283         grouping the staves together.  The bar lines of the contained
284         staves are connected vertically.
285 "
286         
287         \accepts "InnerChoirStaff"
288         \accepts "ChoirStaff"
289         \accepts "InnerStaffGroup"
290         \accepts "FiguredBass"
291 }
292
293
294 % UGH! JUNKME
295 \translator{
296         \type "Engraver_group_engraver"
297         \consistsend "Hara_kiri_engraver"
298         minimumVerticalExtent = #'(-1.2 . 2.4)
299         extraVerticalExtent = ##f
300         verticalExtent = ##f
301
302         \description "
303     Corresponds to a voice with lyrics.  Handles the printing of a
304     single line of lyrics.
305 "
306         
307         \name LyricsVoice 
308         \consists "Separating_line_group_engraver"
309         \consists "Lyric_engraver"
310         \consists "Extender_engraver"
311         \consists "Hyphen_engraver"
312         \consists "Stanza_number_engraver"
313         \consists "Instrument_name_engraver"
314         \consists "Skip_event_swallow_translator"
315         SeparationItem \set #'padding = #0.5
316 }
317 \translator {
318         \type "Engraver_group_engraver"
319         \name NoteNames
320         \consistsend "Axis_group_engraver"
321
322         minimumVerticalExtent = ##f
323         extraVerticalExtent = ##f
324         verticalExtent = ##f 
325
326         
327         \consists "Rest_swallow_translator" 
328         \consists "Skip_event_swallow_translator"
329         \consists "Tie_engraver"
330         \consists "Note_swallow_translator"
331         \consists "Note_name_engraver"
332         \consists "Separating_line_group_engraver"
333 }
334
335 \translator {
336         \type "Engraver_group_engraver"
337         \name Lyrics
338         \description  "Typesets lyrics."
339         
340         %% To get folded repeats right.
341         \consists Vertical_align_engraver 
342
343         minimumVerticalExtent = ##f
344         extraVerticalExtent = ##f
345         verticalExtent = ##f 
346         
347         \accepts "LyricsVoice"
348 }
349
350
351 \translator {
352         \type "Engraver_group_engraver"
353         \name ChordNames
354         \description "Typesets chord names."
355         
356         \consists "Rest_swallow_translator" 
357         \consists "Output_property_engraver"    
358         \consists "Separating_line_group_engraver"
359         \consists "Chord_name_engraver"
360         \consists "Skip_event_swallow_translator"
361         \consistsend "Hara_kiri_engraver"
362         
363         minimumVerticalExtent = #'(0 . 2.5)
364         extraVerticalExtent = ##f
365         SeparatingGroupSpanner \override #'padding = #0.8
366         verticalExtent = ##f 
367 }
368
369
370 RemoveEmptyStaffContext= \translator {
371         \StaffContext
372         \remove "Axis_group_engraver"
373         \consistsend "Hara_kiri_engraver"
374         \accepts "Voice"
375
376         % hara kiri & auto knee don't work together.
377         Beam \override #'auto-knee-gap = #'()
378 }
379
380 AncientRemoveEmptyStaffContext = \translator {
381     %% why not add by default?
382     
383         \RemoveEmptyStaffContext
384         \accepts "VaticanaVoice"
385         \accepts "GregorianTranscriptionVoice"
386 }
387
388 \translator {
389         \type Score_engraver
390         \name Score
391         localKeySignature = #'()
392
393         \description "This is the top level notation context.  No
394     other context can contain a @code{Score} context.  This context
395     handles the administration of time signatures.  It also makes sure
396     that items such as clefs, time signatures, and key-signatures are
397     aligned across staves.
398
399     You cannot explicitly instantiate a Score context (since it is
400     not contained in any other context).  It is instantiated
401     automatically when an output definition (a @code{\score} or
402     @code{\paper} block) is processed."
403         
404         \consists "Repeat_acknowledge_engraver"
405         \consists "Staff_collecting_engraver"
406
407         % move the alias along with the engraver.
408
409         %% TODO? add this alias from Timing_engraver::initialize() ? 
410         \consists "Timing_engraver"
411         \alias "Timing"
412         
413         \consists "Output_property_engraver"
414         \consists "System_start_delimiter_engraver"
415         \consists "Mark_engraver"       
416         \consists "Metronome_mark_engraver"     
417         \consists "Break_align_engraver"
418         \consists "Spacing_engraver"
419         \consists "Vertical_align_engraver"
420         \consists "Lyric_phrasing_engraver"
421         \consists "Bar_number_engraver"
422         \consists "Span_arpeggio_engraver"
423
424         \accepts "Staff"
425         \accepts "TabStaff"
426         \accepts "VaticanaStaff"
427         \accepts "GregorianTranscriptionStaff"
428         \accepts "StaffContainer"
429         \accepts "StaffGroup"
430         \accepts "RhythmicStaff"
431         \accepts "Lyrics"
432         \accepts "ChordNames"
433         \accepts "GrandStaff"
434         \accepts "ChoirStaff"
435         \accepts "PianoStaff"
436         \accepts "NoteNames"
437         \accepts "FiguredBass"
438
439         soloText = #"Solo"
440         soloIIText = #"Solo II"
441         aDueText = #"a2"
442         soloADue = ##t
443         splitInterval = #'(0 . 1)
444         changeMoment = #`(,(ly:make-moment 0 0) . ,(ly:make-moment 1 512))
445         systemStartDelimiter =#'SystemStartBar
446
447         melismaBusyProperties = #default-melisma-properties
448         
449         clefGlyph = #"clefs-G"
450         clefPosition = #-2
451         centralCPosition = #-6
452         
453         defaultBarType = #"|"
454         barNumberVisibility = #default-bar-number-visibility
455         automaticBars = ##t
456         
457         explicitClefVisibility = #all-visible
458         explicitKeySignatureVisibility = #all-visible
459         autoBeamSettings = #default-auto-beam-settings
460         autoBeaming = ##t
461         scriptDefinitions = #default-script-alist
462
463         verticalAlignmentChildCallback = #Align_interface::alignment_callback
464
465         pedalSustainStrings = #'("Ped." "*Ped." "*")
466         pedalSustainStyle = #'text
467         pedalUnaCordaStrings = #'("una corda" "" "tre corde")
468         pedalUnaCordaStyle = #'text
469
470         %% These are in ordinary italic font, including the *,
471         %% but they are unlikely to be used, 
472         %% as the default pedal-style for SostenutoPedal is 'mixed':
473         %% i.e.  Sost. Ped_____________________ 
474         pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*") 
475         pedalSostenutoStyle = #'mixed
476
477         fingeringOrientations = #'(up down)
478         tupletNumberFormatFunction = #denominator-tuplet-formatter
479         markFormatter = #format-mark-letters
480         rehearsalMark = #1 
481         subdivideBeams = ##f
482         allowBeamBreak = ##f
483         extraNatural = ##t
484         autoAccidentals = #'(Staff (same-octave . 0))
485         autoCautionaries = #'()  
486
487        keyAccidentalOrder = #`(
488          (6 . ,FLAT) (2  . ,FLAT) (5 . ,FLAT ) (1  . ,FLAT) (4  . ,FLAT) (0  . ,FLAT) (3  . ,FLAT)
489          (3  . ,SHARP) (0 . ,SHARP) (4 . ,SHARP) (1 . ,SHARP) (5 . ,SHARP) (2 . ,SHARP) (6 . ,SHARP)
490          (6 . ,DOUBLE-FLAT) (2  . ,DOUBLE-FLAT) (5 . ,DOUBLE-FLAT ) (1  . ,DOUBLE-FLAT) (4  . ,DOUBLE-FLAT) (0  . ,DOUBLE-FLAT) (3 . ,DOUBLE-FLAT)
491          (3  . ,DOUBLE-SHARP) (0 . ,DOUBLE-SHARP) (4 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (5 . ,DOUBLE-SHARP) (2 . ,DOUBLE-SHARP) (6 . ,DOUBLE-SHARP)
492         )
493         breakAlignOrder = #'(
494           instrument-name
495           left-edge
496           ambitus
497           breathing-sign
498           clef
499           rehearsal-mark
500           staff-bar
501           key-signature
502           time-signature
503           custos
504         )
505         barCheckSynchronize = ##f
506         
507         %% chord names:
508         chordNameFunction = #ignatzek-chord-names
509         majorSevenSymbol = #whiteTriangleMarkup
510         chordNameSeparator = #(make-simple-markup  "/")
511         chordNameExceptions = #ignatzekExceptions
512         chordNoteNamer = #'()
513         chordRootNamer = #note-name->markup
514
515         chordNameExceptionsFull = #fullJazzExceptions
516         chordNameExceptionsPartial = #partialJazzExceptions
517         
518         %% tablature:
519         stringOneTopmost = ##t
520         highStringOne = ##t
521
522         %% One may change the strings tuning as following :
523         %% The lenght of the list must be equal to the number of string
524         stringTunings   = #guitar-tunings
525         tablatureFormat = #fret-number-tablature-format
526
527         %%
528         bassFigureFormatFunction = #make-bass-figure-markup
529         metronomeMarkFormatter = #format-metronome-markup
530         graceSettings = #`#(
531                  (Voice Stem direction 1)
532
533                  ;; TODO: should take from existing definition.
534                  ;; c&p from define-grobs.scm
535                  
536                  (Voice Stem lengths ,(map (lambda (x) (* 0.8 x)) '(3.5 3.5 3.5 4.5 5.0)))
537                  (Voice Stem stem-shorten (0.4 0))
538                  (Voice Stem  font-size -3)
539                  (Voice NoteHead  font-size -3)
540                  (Voice Dots  font-size -3)
541                  (Voice Stem beamed-lengths  
542                   ,(map (lambda (x) (* 0.8 x)) '(3.26)))
543                  (Voice Stem beamed-minimum-free-lengths  
544                   ,(map (lambda (x) (* 0.8 x)) '(2.5 2.0 1.5)))
545                  (Voice Stem beamed-extreme-minimum-free-lengths  
546                   ,(map (lambda (x) (* 0.8 x)) '(1.83 1.5)))
547
548                  (Voice Stem no-stem-extend #t)
549                  (Voice Beam thickness 0.384)
550                  (Voice Beam space-function ,(lambda (beam mult)
551                                                 (* 0.8 (Beam::space_function
552                                                         beam mult))))
553                  (Voice Beam position-callbacks (,Beam::least_squares
554                                                     ,Beam::check_concave
555                                                     ,Beam::slope_damping))
556                  (Staff Accidental font-size -4)
557                  (Voice Slur direction -1)
558         )
559         
560         \grobdescriptions #all-grob-descriptions
561 }
562
563 OrchestralScoreContext = \translator {
564         \ScoreContext
565 }
566
567 EasyNotation = \translator {
568         \ScoreContext
569         NoteHead \override #'molecule-callback = #Note_head::brew_ez_molecule
570         NoteHead \override #'Y-extent-callback = #'()
571         NoteHead \override #'X-extent-callback = #'()
572 }
573
574
575
576 \translator {
577         \type "Engraver_group_engraver"
578         \name FiguredBass 
579         \consists "Figured_bass_engraver"
580         \consists "Rest_swallow_translator"
581         \consists "Note_swallow_translator"
582         \consists "Separating_line_group_engraver"
583         
584         \consistsend "Hara_kiri_engraver"
585 }
586
587 \translator {
588       \VoiceContext
589       \name "TabVoice"
590       \denies "Thread"
591       \consists "Tab_note_heads_engraver"
592       \remove "Fingering_engraver"
593       \remove "New_fingering_engraver"
594       
595       Slur \override #'font-family       = #'roman
596       Slur \override #'molecule-callback = #hammer-molecule-callback
597       Slur \override #'direction    = #-1
598
599       % Draws all stems/beams out of the staff (and not in the middle of the staff !)
600       % This feature is now disabled because most of the tab does not use it.
601       %Beam \override #'damping = #100000
602       %Stem \override #'up-to-staff = ##t
603
604       % No accidental in tablature !
605       \remove Accidental_engraver
606 }
607
608 \translator {
609       \StaffContext
610       \alias "Staff"
611       \name "TabStaff"
612       \denies "Voice"
613
614       \description "Context for generating tablature. [DOCME]"
615
616 %{
617       TODO: this context should use a special staff_symbol engraver that
618       takes the line count out of the stringTunings property.
619
620 %}
621       
622       
623       \accepts "TabVoice"
624       
625       % 6 strings
626       StaffSymbol \override #'line-count  = #6
627       StaffSymbol \override #'staff-space = #1.5
628
629      % Don't draw stems over the tablature figures !
630       Stem \override #'avoid-note-head = ##t
631       
632       % No accidental in tablature !
633       \remove "Accidental_engraver"
634       \remove "Key_engraver"
635       \remove "String_number_engraver"
636       % Special "TAB" clef
637       clefGlyph = #"clefs-tab"
638       clefPosition = #0
639 }
640
641 % TODO: Gregorian Chant contexts should be moved to gregorian-init.ly,
642 % but this does not work (is this a bug or intended behaviour?):
643 %
644 % If I try to do so, I get "error: unknown escaped string:
645 % `\VaticanaStaffContext'" in params-init.ly.  If I also move
646 % "\translator { \Vaticana*Context }" from params-init.ly to the end
647 % of gregorian-init.ly, then I get "error: parse error, unexpected
648 % TRANSLATOR: \translator { \VaticanaStaffContext }" in
649 % gregorian-init.ly. --jr
650
651 \translator {
652   \VoiceContext
653   \name "VaticanaVoice"
654   \alias "Voice"
655   \description "Same as @code{Voice} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
656
657   % We can not remove Slur_engraver, since \addlyrics depends on it.
658   % Instead, we make the grob transparent.
659   % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
660   % infinite steepness reqd"), since in ligatures, all note heads are in
661   % the same paper column such that the (transparent) slurs eventually may
662   % start and end in the same column.
663   Slur \override #'transparent = ##t
664
665   % We can not remove Stem_engraver, since slurs depend on stems.  If
666   % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
667   % in position 1 (expecting grob): ()".
668   % As a workaround, we make the grob transparent.
669   Stem \set #'transparent = ##t
670
671   % Since we do not remove stems, but only make it transparent, we have
672   % to set the length to 0.0.  Otherwise, articulation marks (such as
673   % ictus, circulus or accentus) may be vertically placed quite away from
674   % the note head.
675   Stem \set #'length = #'0.0
676
677   \remove "Ligature_bracket_engraver"
678   \consists "Vaticana_ligature_engraver"
679
680   % Set default head for notes outside of \[ \].
681   NoteHead \set #'style = #'vaticana_punctum
682
683   % Put some space before and after divisiones.
684   % FIXME: This does not seem to show any effect.
685   Script \set #'padding = #0.5
686
687   % There are no beams in Gregorian Chant notation.
688   autobeaming = ##f
689
690   % Prepare TextSpanner for \episem{Initium|Finis} use.
691   TextSpanner \set #'style = #'line
692   TextSpanner \set #'edge-height = #'(0 . 0)
693   TextSpanner \set #'padding = #0.5
694   TextSpanner \set #'enclose-bounds = ##t
695   TextSpanner \set #'edge-text = #'("" . "")
696 }
697
698 \translator {
699   \StaffContext
700   \name "VaticanaStaff"
701   \alias "Staff"
702   \denies "Voice"
703   \accepts "VaticanaVoice"
704   \description "Same as @code{Staff} context, except that it is accommodated for tyepsetting Gregorian Chant in the notational style of Editio Vaticana."
705
706   \remove "Time_signature_engraver"
707   \consists "Custos_engraver"
708
709   % We can not remove Bar_engraver; otherwise clefs and custodes will
710   % not show up any more among other line breaking issues.
711   % Instead, we make the grob transparent.
712   BarLine \set #'transparent = ##t
713
714   StaffSymbol \set #'line-count = #4
715   StaffSymbol \set #'thickness = #0.6
716
717   % FIXME: unit on StaffSymbol's width should be \linewidth.
718   % StaffSymbol \set #'width = #60.0
719
720   % Choose vaticana do clef on 3rd line as default.
721   clefGlyph = #"clefs-vaticana_do"
722   centralCPosition = #1
723   clefPosition = #1
724   clefOctavation = #0
725
726   % Select vaticana style font.
727   KeySignature \set #'style = #'vaticana
728   Accidental \set #'style = #'vaticana
729   Custos \set #'style = #'vaticana
730   Custos \set #'neutral-position = #3
731   Custos \set #'neutral-direction = #-1
732   Custos \set #'adjust-if-on-staffline = ##t
733
734   % Score.timing = ##f
735   % Score.barAlways = ##t
736 }
737
738 \translator {
739   \VoiceContext
740   \name "GregorianTranscriptionVoice"
741   \alias "Voice"
742
743   % Removing ligature bracket engraver without replacing it by some
744   % other ligature engraver would cause a "Junking event: `LigatureEvent'"
745   % warning for every "\[" and "\]".  Therefore, we make the grob
746   % transparent instead.
747   LigatureBracket \set #'transparent = ##t
748
749   % We can not remove Slur_engraver, since \addlyrics depends on it.
750   % Instead, we make the grob transparent.
751   % Unfortunately, this gives us a lot of warnings ("Degenerate bow:
752   % infinite steepness reqd"), since in ligatures, all note heads are in
753   % the same paper column such that the (transparent) slurs eventually may
754   % start and end in the same column.
755   Slur \override #'transparent = ##t
756
757   % We can not remove Stem_engraver, since slurs depend on stems.  If
758   % we try anyway, lily will crash in slur.scm:16:6: "Wrong type argument
759   % in position 1 (expecting grob): ()".
760   % As a workaround, we make the grob transparent.
761   Stem \set #'transparent = ##t
762
763   % Since we do not remove stems, but only make it transparent, we have
764   % to set the length to 0.0.  Otherwise, articulation marks (such as
765   % ictus, circulus or accentus) may be vertically placed quite away from
766   % the note head.
767   Stem \set #'length = #'0.0
768
769   % Put some space before and after divisiones.
770   % FIXME: This does not seem to show any effect.
771   Script \set #'padding = #0.5
772
773   % There are no beams in Gregorian Chant notation.
774   autobeaming = ##f
775
776   % Prepare TextSpanner for \episem{Initium|Finis} use.
777   TextSpanner \set #'style = #'line
778   TextSpanner \set #'edge-height = #'(0 . 0)
779   TextSpanner \set #'padding = #0.5
780   TextSpanner \set #'enclose-bounds = ##t
781   TextSpanner \set #'edge-text = #'("" . "")
782 }
783  \translator {
784   \StaffContext
785   \name "GregorianTranscriptionStaff"
786   \alias "Staff"
787   \denies "Voice"
788   \accepts "GregorianTranscriptionVoice"
789
790   % We can not remove Bar_engraver; otherwise clefs and custodes will
791   % not show up any more among other line breaking issues.
792   % Instead, we make the grob transparent.
793   BarLine \set #'transparent = ##t
794 }