Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 3a7b4dfc766af1222d90c7f03a0844e6 > files > 7135

lilypond-doc-2.11.57-1mdv2009.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- header_tag -->
<html lang="en">
<head>
<title>Difficult tweaks - GNU LilyPond Notation Reference</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="GNU LilyPond Notation Reference">
<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.es.html#Top">
<link rel="up" href="TODO-moved-into-scheme.es.html#TODO-moved-into-scheme" title="TODO moved into scheme">
<link rel="prev" href="Using-Scheme-code-instead-of-_005ctweak.es.html#Using-Scheme-code-instead-of-_005ctweak" title="Using Scheme code instead of \tweak">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1999--2007 by the authors

     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.1 or any later version published by the Free Software
     Foundation; with no Invariant Sections.  A copy of the license is
     included in the section entitled ``GNU Free Documentation
     License''.
   -->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
hr { border:0; height:1; color: #000000; background-color: #000000; }
/* hr {
  border:  none;
  height: 1px;
  color: #666666;
  background-color: #666666;
}
body {
  border-left: 1px solid #666666;
  border-right: 1px solid #666666;
  color: #332d28;
  margin-right: auto;
  margin-left: auto;
  width: 60em;
  list-style-type: square;
  font-family: Arial,Helvetica,sans-serif;
  padding-right: 1em;
  padding-left: 1em;
}
a {
  border-bottom: 1px dashed #344242;
  text-decoration: none;
  color: #344242;
}
a:link {
  text-decoration: none;
}
a:visited {
  border-bottom: 1px dashed #666666;
  color: #666666;
}
a:active {
  border-bottom: 1px solid #00cccc;
  color: #00cccc;
}
a:hover {
  border-bottom: 1px solid #1d7b85;
  color: #1d7b85;
}
blockquote {
  border: 1px solid #cccccc;
  padding: 3px;
  width: 40em;
}
.node {
  border-left: 1px solid #666666;
  margin: -0.5em 0px 1em;
  padding: 2px 1px 0px;
  font-style: italic;
}
.node a {
  border:  none;
  text-decoration: underline;
  font-style: normal;
  font-weight: bold;
}
.verbatim {
  font-family: "Courier New",Courier,monospace;
}
.unnumberedsubsubsec {
  font-size: large;
  color: #1d7b85;
}
.subsubheading {
  font-size: large;
  color: #3b220d;
}
.contents {
  border: 1px dashed #339999;
  margin: 3px 2em;
  list-style-type: square;
  padding-right: 1em;
  width: 40em;
  background-color: #fcfff9;
}
.contents a {
  border-bottom: 1px dashed #423d34;
  text-decoration: none;
  color: #423d34;
}
.contents a:visited {
  border-bottom: 1px dashed #666666;
  color: #666666;
}
.contents a:active {
  border-bottom: 1px solid #f0d86d;
  color: #f0d86d;
}
.contents a:hover {
  border-bottom: 1px solid #3b220d;
  color: #3b220d;
}
.menu {
  border-left: 1px dashed #339999;
  margin: 3px 2em 1em;
  list-style-type: square;
  padding-left: 1.4em;
  width: 40em;
}
.unnumbered {
}
h2 {
  font-size: x-large;
  color: #1d7b85;
}
*/
--></style>
</head>
<BODY BGCOLOR=WHITE TEXT=BLACK>

<div class="node">
<p>
<a name="Difficult-tweaks"></a>
Previous:&nbsp;<a rel="previous" accesskey="p" href="Using-Scheme-code-instead-of-_005ctweak.es.html#Using-Scheme-code-instead-of-_005ctweak">Using Scheme code instead of \tweak</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="TODO-moved-into-scheme.es.html#TODO-moved-into-scheme">TODO moved into scheme</a>
<hr>
</div>

<h4 class="subsection">6.7.2 Difficult tweaks</h4>

<p>There are a few classes of difficult adjustments.

     <ul>
<li>One type of difficult adjustment is the appearance of spanner objects,
such as slur and tie.  Initially, only one of these objects is created,
and they can be adjusted with the normal mechanism.  However, in some
cases the spanners cross line breaks.  If this happens, these objects
are cloned.  A separate object is created for every system that it is
in.  These are clones of the original object and inherit all
properties, including <code>\override</code>s.

     <p>In other words, an <code>\override</code> always affects all pieces of a
broken spanner.  To change only one part of a spanner at a line break,
it is necessary to hook into the formatting process.  The
<code>after-line-breaking</code> callback contains the Scheme procedure that
is called after the line breaks have been determined, and layout
objects have been split over different systems.

     <p>In the following example, we define a procedure
<code>my-callback</code>.  This procedure

          <ul>
<li>determines if we have been split across line breaks
<li>if yes, retrieves all the split objects
<li>checks if we are the last of the split objects
<li>if yes, it sets <code>extra-offset</code>. 
</ul>

     <p>This procedure is installed into <a name="index-Tie-2835"></a><a href="../lilypond-internals/Tie.es.html#Tie">Tie</a>, so the last part
of the broken tie is translated up.

     <blockquote>
<pre class="verbatim">          
          #(define (my-callback grob)
            (let* (
                   ; have we been split?
                   (orig (ly:grob-original grob))
          
                   ; if yes, get the split pieces (our siblings)
                   (siblings (if (ly:grob? orig)
                               (ly:spanner-broken-into orig) '() )))
          
             (if (and (>= (length siblings) 2)
                       (eq? (car (last-pair siblings)) grob))
               (ly:grob-set-property! grob 'extra-offset '(-2 . 5)))))
          
          \relative c'' {
            \override Tie #'after-line-breaking =
            #my-callback
            c1 ~ \break c2 ~ c
          }
     </pre>
          <p>
 <a href="../c3/lily-92ba8123.ly">
  <img align="middle"
    border="0" src="../c3/lily-92ba8123.png" alt="[image of music]">
 </a>
</p>

     </blockquote>

     <p class="noindent">When applying this trick, the new <code>after-line-breaking</code> callback
should also call the old one <code>after-line-breaking</code>, if there is
one.  For example, if using this with <code>Hairpin</code>,
<code>ly:hairpin::after-line-breaking</code> should also be called.

     <li>Some objects cannot be changed with <code>\override</code> for
technical reasons.  Examples of those are <code>NonMusicalPaperColumn</code>
and <code>PaperColumn</code>.  They can be changed with the
<code>\overrideProperty</code> function, which works similar to <code>\once
\override</code>, but uses a different syntax.

     <pre class="example">     \overrideProperty
     #"Score.NonMusicalPaperColumn"  % Grob name
     #'line-break-system-details     % Property name
     #'((next-padding . 20))         % Value
</pre>
     <p>Note, however, that <code>\override</code>, applied to
<code>NoteMusicalPaperColumn</code> and <code>PaperColumn</code>, still works as
expected within <code>\context</code> blocks.

   </ul>

<!-- *- coding: utf-8; mode: texinfo; -*- -->
<!-- This file is part of lilypond.tely -->
<!-- \version "2.11.51" -->
   <!-- footer_tag --><br><hr>
<div class="node">
<p>
Previous:&nbsp;<a rel="previous" accesskey="p" href="Using-Scheme-code-instead-of-_005ctweak.es.html#Using-Scheme-code-instead-of-_005ctweak">Using Scheme code instead of 	weak</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="TODO-moved-into-scheme.es.html#TODO-moved-into-scheme">TODO moved into scheme</a>
</div>

<div style="background-color: #e8ffe8; padding: 2; border: #c0ffc0 1px solid;">
<p>
<font size="-1">
Esta página corresponde a LilyPond-2.11.57 (rama de desarrollo).
<br>
<address>
Informe de los fallos a través de la lista en español <a href="http://es.groups.yahoo.com/group/lilypond-es/">lilypond-es</a>, o en inglés a través de <a href="http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs">http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs</a>. </address>
<br>
Se agradecen las <a href="http://lilypond.org/web/devel/participating/documentation-adding">sugerencias para la documentación</a>.
</font>
</p>
</div>


<P>
 Otros idiomas: <a href="Difficult-tweaks.fr.html">français</a>.
 <BR>
 
</P>
</BODY></html>