Skip to content

Commit

Permalink
Allow the size of the paper to be customized
Browse files Browse the repository at this point in the history
in relation with patanet
  • Loading branch information
oliverpool committed Apr 27, 2015
1 parent 39dbf5d commit 3586b3a
Showing 1 changed file with 40 additions and 8 deletions.
48 changes: 40 additions & 8 deletions templates/data.tex
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,35 @@
},
"papersize":{ "description": {"english": "Paper size.",
"french": "Taille du papier."},
"type": "enum",
"values": {"a4": {"default": "A4"},
"a5": {"default": "A5"}
},
"default": {"default":"a4"}
"default": {"default":"A4"}
},
"width":{ "description": {"english": "Width.",
"french": "Largeur."},
"default": {"default":"210"}
},
"height":{ "description": {"english": "Height.",
"french": "Hauteur."},
"default": {"default":"297"}
},
"margin_top":{ "description": {"english": "Margin top.",
"french": "Marge en haut."},
"default": {"default":"13"}
},
"margin_right":{ "description": {"english": "Margin right.",
"french": "Marge à droite."},
"default": {"default":"18"}
},
"margin_bottom":{ "description": {"english": "Margin bottom.",
"french": "Marge en bas."},
"default": {"default":"13"}
},
"margin_left":{ "description": {"english": "Margin left.",
"french": "Marge à gauche."},
"default": {"default":"18"}
},
"bindingoffset":{ "description": {"english": "Binding offset.",
"french": "Reliure."},
"default": {"default":"0"}
},
"orientation":{ "description": {"english": "Paper orientation.",
"french": "Orientation du papier."},
Expand Down Expand Up @@ -96,14 +120,22 @@
\makeatother
%! End of font management

\geometry{((orientation)), ((papersize))paper}
\geometry{
total={((width))mm,((height))mm}
,left=((margin_left))mm
,right=((margin_right))mm
,top=((margin_top))mm
,bottom=((margin_bottom))mm
,asymmetric
,bindingoffset=((bindingoffset))mm % space reserved to bound pages together
}

%! Temporary hack for columns management
\let\OldSongColumns=\songcolumns
\def\songcolumns#1{%
(* if orientation=="portrait" and papersize=="a5" *)
(* if orientation=="portrait" and papersize=="A5" *)
\OldSongColumns{1}
(* elif orientation=="landscape" and papersize=="a4" *)
(* elif orientation=="landscape" and papersize=="A4" *)
\count0=#1\relax\advance\count0 by 1\relax%
\OldSongColumns{\count0}
(* else *)
Expand Down

11 comments on commit 3586b3a

@paternal
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@oliverpool : Je ne comprends pas vraiment l'utilité de ce commit ; tu peux m'éclairer ? Ma remarque est peut-être prématurée : c'est peut-être du travail en cours…

  • La variable papersize est toujours définie, mais ne sert plus à rien. Pourquoi l'avoir laissée ?
  • Quel est le but de ces nouvelles variables ? Comptes-tu les utiliser dans patacrep, patanet, patagui, ou autre ? J'ai l'impression qu'il commence à y avoir beaucoup de variables, que pour définir du a4, on est obligé de définir toutes les dimensions du papier, au lieu de définir simplement papersize=a4. Est-ce qu'un nouveau template, propre à patacrep, patanet, patagui, (quel que soit le projet dans lequel tu comptes utiliser cela) ne serait pas plus pratique ?
  • Enfin, principale question : Quel est le but de cette branche ?

-- Louis

@Luthaf
Copy link
Contributor

@Luthaf Luthaf commented on 3586b3a Apr 27, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je crois que c'est en lien avec patacrep/patanet#130. Et un nouveau template pourrait faire l'affaire en effet.

@oliverpool
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est effectivement un travail en cours:

  • Le but est de simplifier l'ajustement des marges et de la taille du papier pour Papersize selection patanet#130 (mais cela peut-être utilisé pour patagui et/ou patacrep). En effet, j'ai créé un carnet l'an dernier, et nous avons fait plein d'éditions différentes (A5 avec les accords, A6 sans les accords, 4:3 pour projeter sur un écran...)
  • J'ai gardé la variable papersize pour l'ajustement des colonnes
  • je suis d'accord que ça fait beaucoup (trop?) de variables... Quel est le système utilisé pour "parser" ces variables ? est-il possible de les regrouper ? (pour avoir paper->margin->bottom par exemple)
  • J'ai fait une branche à part pour éviter de changer master arbitrairement (et du coup permettre une discussion sans avoir à annuler des commit sur master ;-). Une fois qu'une solution fait consensus, je comptais la merger.

Faire un nouveau template me convient aussi ! (mais j'ai besoin d'aide pour trouver un nom ^^ custom_paper.tex ?)

@paternal
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je comprends mieux l'utilité, mais le problème avec cette proposition, c'est qu'on est forcé de tout définir. Ce que je trouverais mieux, c'est :

  • pouvoir utiliser une taille de papier « générique » (a4paper, a5paper, etc.), et laisser LaTeX faire le reste ;
  • pouvoir donner plus de précisions si nécessaire (ton besoin).

Que pensez vous de remplacer les options papersize et orientation par une unique option geometry, et passer cette option directement en option à l'appel LaTeX \usepackage[((geometry))]{geometry} ?. Comme ça :

  • (patacrep) les configurations simples sont lisibles par l'utilisateur (a4paper, landscape, a5paper) ;
  • (patacrep) les configurations compliquées sont un peu plus complexes à écrire, mais ça reste compréhensible ;
  • (patanet) vous enregistrez les informations que vous voulez dans la base de donnée, et vous traduisez ça en une unique variable geometry qui est passée à patacrep.

Ça me parait à la fois simple et riche. Qu'en pensez-vous ?

@oliverpool
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je pensais que les {"default":"18"} permettaient de donner un valeur par défaut (sans devoir tout redéfinir).

Effectivement, on peut regrouper la majorité dans une unique variable geometry (et on laisse le soin à chaque interface de l'écrire selon ses besoins.

Le problème de l'ajustement des colonnes subsiste... Peut être ajouter une variable dédiée column_adjustment qui prenne les valeurs none, one_more, only_one ?

@paternal
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je pensais que les {"default":"18"} permettaient de donner un valeur par défaut (sans devoir tout redéfinir).

Effectivement, mais avec ça, on n'a qu'une seule valeur par défaut : si on a décidé que le défaut était A4, et que l'utilisateur veut du A5, il est obligé de redéfinir toutes les variables, pas seulement papersize=a5.

Effectivement, on peut regrouper la majorité dans une unique variable geometry (et on laisse le soin à chaque interface de l'écrire selon ses besoins.

Un autre avantage, en ce qui concerne les valeurs par défaut, est qu'en passant directement à LaTeX la variable geometry, si l'utilisateur ne met rien, ça garde les valeurs par défaut de LaTeX, qui sont, si c'est configuré correctement, les valeurs par défaut du pays de l'utilisateur (A4 pour la France, letter pour les États-Unis, etc.).

Le problème de l'ajustement des colonnes subsiste... Peut être ajouter une variable dédiée column_adjustment qui prenne les valeurs none, one_more, only_one ?

Effectivement, c'est un problème, et c'est une solution (il faudrait me rappeler à quoi correspondent none, one_more, only_one ; ça fait longtemps que je ne me suis pas intéressé aux colonnes). Et on peut tout changer au niveau des colonnes, vu que c'est un travail en cours patacrep/patacrep#41.

@Luthaf, qu'en penses-tu ?

@oliverpool
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le hack actuel des colonnes est (de mémoire):

  • si c'est du A5 portrait, on impose une seule colonne (ce que j'appelle only_one)
  • si c'est du A4 paysage, on ajoute une colonne à chaque chant (one_more)
  • si c'est du A4 portrait ou A5 paysage, on ne change rien (none)

@Luthaf
Copy link
Contributor

@Luthaf Luthaf commented on 3586b3a Apr 28, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le hack actuel des colonnes est (de mémoire):

De mémoire c'est bien ça =) Je ne sais plus où on en est des colonnes au niveau de patacrep.

@Luthaf, qu'en penses-tu ?

On a deux solutions ici : soit utiliser une unique variable geometry et tout faire passer dedans, soit utiliser un template specifique (full_geometry.tex ?) pour patanet dans lequel on mette toutes les variables dont on aura besoin un jour.

@oliverpool
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je suis assez partant pour une variable unique (ce qui offre le plus d'évolutivité pour les outils externes).

C'est peut-être moins lisible (quoique), mais c'est principalement dédié à une utilisation par d'autres outils (patanet, patagui...). Si quelqu'un l'édite à la main, il a autant intérêt à créer sa propre template.

@paternal
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hé bien si ça convient à @Luthaf, on est parti pour l'unique variable geometry, et les modif de colonnes proposées par @oliverpool.

@oliverpool
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, je m'en charge et je créé une PR dans la foulée

Please sign in to comment.