lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Nombres de systèmes par page (2.10 -> 2.11)


From: Xavier Scheuer
Subject: Re: Nombres de systèmes par page (2.10 -> 2.11)
Date: Wed, 23 Jan 2008 01:58:48 +0100

Le lundi 21 janvier 2008 à 22:08 +0100, Nicolas Sceaux a écrit :
En fait j'ai implémenté certains petits bouts, en tout cas j'ai pas mal
lu tout ce code, donc je comprends assez bien cette partie.

J'ignorais que tu faisais également partie de l'équipe de développement, chapeau bas!

Pour ly:minimal-breaking, j'avais mal compris son rôle. Je pensais minimal dans le sens "nombre de pages minimal" et non "ressources minimales", d'où mon incompréhension.
Je viens de relire la documentation à ce sujet et je ne vois pas ce qui m'a laissé penser cela...

Je ne partage pas cet avis. De plus, comme tu as toujours
optimal-page-breaks ce n'est même pas un problème. Si tu veux
le calcul au plus près, utilise optimal-page-breaks, sinon,
utilise les autres.

Oui oui, ce n'est pas un problème.
C'est juste le fait que optimal-page-breaks est décrit dans la doc comme étant "l'ancien algorithme" (et donc dans mon esprit ancien = qui n'évoluera plus, amené à disparaître) et je voulais juste donner mon avis et dire que cet algorithme n'était pas si mal et pouvait encore servir (dans certains cas).
Ah oui, et je tenais quand même à préciser que je trouve lilypond extraordinaire et la doc géniale, même si en général on écrit parce qu'on a un problème ou un truc qui ne va pas (alors qu'on parle très peu de tout le reste qui fonctionne à merveille).

J'ai oublié un détail dans mon explication. Le nouvel algo
ly:optimal-page-breaking utilise des estimations des hauteurs
car il effectue à la fois le calcul des sauts de lignes *et*
des sauts de pages (c'est ça la raison première, les autres,
étirement et table des matières, ne sont que des conséquences)
C'est-à-dire qu'il pourra tasser un peu plus les notes pour faire
tout rentrer sur une page quand l'ancien algo optimal-page-breaks
débordera sur deux pages.

J'apprends plein de choses!  ;-)
Et donc si je comprends bien optimal-page-breaks (l'ancien algo), lui, calcule d'abord les sauts de ligne (tout en dessinant les systèmes) puis s'occupe des sauts de pages, c'est bien ça (je m'intéresse)?

Je suis d'accord pour dire que le nouvel algo est perfectible, et
n'atteint peut-être pas la qualité de l'ancien dans certains cas
(en particulier des systèmes à plusieurs portées). Mais son potentiel
est bien plus élevé, il demande juste à être tournevissé pour être
plus efficace. Pour cela, il faut l'utiliser et reporter des bugs ou
proposer des patches.

Sur ce point je n'ai qu'une chose à dire : je suis d'accord (il est perfectible, il a du potentiel) et courage aux programmeurs (pour le perfectionner et utiliser ce potentiel)!  ;-D
De mon côté je ne manquerai pas de l'utiliser ; par contre je suis très peu familier aux procédures de report de bug et malheureusement je n'y connais quasi rien en programmation.

Merci!


Xavier


Le lundi 21 janvier 2008 à 22:08 +0100, Nicolas Sceaux a écrit :
Le 20 janv. 08 à 23:53, Xavier Scheuer a écrit :

> It's not a bug, it's a feature!
>
> Non, plus sérieusement, un tout grand merci pour cette réponse.
> Non seulement c'est complet et bien expliqué, mais en plus on sait  
> le pourquoi des choses.
> Ça fait vraiment plaisir d'avoir des personnes qui connaissent bien  
> le sujet et qui partagent leur savoir en aidant les autres via cette  
> liste de diffusion (et en plus on reçoit la réponse dans sa langue  
> maternelle)!

En fait j'ai implémenté certains petits bouts, en tout cas j'ai pas mal
lu tout ce code, donc je comprends assez bien cette partie.

> Il faudra m'expliquer l'utilité de ly:minimal-breaking s'il utilise  
> la même estimation pour le calcul de la hauteur des systèmes (et  
> donc du nombre de systèmes par page) que ly:optimal-page-breaking...

ly:optimal-breaking tente de placer les sauts de lignes et les
sauts de page de telle façon que le résultat soit le plus homogène
possible sur la totalité du document. L'algorithme est assez coûteux
quand le nombre pièces et de lignes est élevé. Voire, dans le cas
d'un opéra entier, il peux ne pas finir du tout sur une machine bien
lotie en RAM et processeurs. Comme je fais des bouquins assez
volumineux, j'ai eu besoin d'algorithmes plus légers, c'est pourquoi
j'ai implémenté ly:minimal-breaking. Cet algo se contente dans
une premier temps de calculer tous les sauts de lignes sans
considérer la mise en page, puis place les systèmes obtenus sur les
pages selon une recette simpliste : mettre autant de système qu'on
peut sur une page, puis passer à la suivante. Par exemple si on a 4
systèmes, et que 3 tiennent sur une page, il fera une page de 3, et
une page de 1 système. Tandis que ly:optimal-breaking opère
différemment : il pourra faire deux pages 2 systèmes.

ly:minimal-breaking a aussi l'avantage de traiter les parties
textuelles plus élégemment : il remplira en entier une page de texte,
plutôt que de lisser le texte sur plusieurs page (avec du blanc en bas
des pages).

> [...]
> Bon alors je n'y connais pas grand chose en programmation et je suis  
> loin d'avoir une longue expérience de lilypond mais je trouve la  
> première démarche plus "logique".
> Je ne suis pas pour des systèmes "étirés", je préfère des systèmes  
> bien dessinés, quitte à devoir les espacer par après pour remplir la  
> page (espacer les systèmes plutôt que de les étirer).
> Surtout que dans certains cas (mon exemple en est la preuve), le  
> fait de vouloir étirer les systèmes plutôt que de les espacer  
> conduit à des espaces entre systèmes plus grands (un comble)!
>
> Quant à l'avantage du système de référence des numéros de page et  
> des tables de matières en une seule compilation je suis assez mitigé.
> Il est, à mon humble avis, préférable d'avoir un nombre de système  
> par page cohérent (et non résultant d'une vague estimation) plutôt  
> que de "gagner" une compilation.

Je ne partage pas cet avis. De plus, comme tu as toujours
optimal-page-breaks ce n'est même pas un problème. Si tu veux
le calcul au plus près, utilise optimal-page-breaks, sinon,
utilise les autres.

J'ai oublié un détail dans mon explication. Le nouvel algo
ly:optimal-page-breaking utilise des estimations des hauteurs
car il effectue à la fois le calcul des sauts de lignes *et*
des sauts de pages (c'est ça la raison première, les autres,
étirement et table des matières, ne sont que des conséquences)
C'est-à-dire qu'il pourra tasser un peu plus les notes pour faire
tout rentrer sur une page quand l'ancien algo optimal-page-breaks
débordera sur deux pages.

Je suis d'accord pour dire que le nouvel algo est perfectible, et
n'atteint peut-être pas la qualité de l'ancien dans certains cas
(en particulier des systèmes à plusieurs portées). Mais son potentiel
est bien plus élevé, il demande juste à être tournevissé pour être
plus efficace. Pour cela, il faut l'utiliser et reporter des bugs ou
proposer des patches.

Nicolas


reply via email to

[Prev in Thread] Current Thread [Next in Thread]